DB 프로세스 목록 확인

작성자 이호영 수정일 2023-03-20 15:56

들어가며

  • DB 프로세스 목록을 확인하는 방법에 대해 알아봅니다.



테이블 정보

1. INFORMATION_SCHEMA DB

  • 데이터를 저장하기 위한 데이터들의 집합체입니다.
  • DB 서버 내에 존재하는 DB의 메타 정보(테이블, 칼럼, 인덱스 등의 스키마 정보)를 모아둔 것으로 INFORMATION_SCHEMA 데이터베이스 내의 모든 테이블을 읽기 전용이며, 단순히 조회만 가능합니다.


2. INFORMATION_SCHEMA.PROCESSLIST Table

  • PROCESSLIST 테이블을 조회하여 서버 내에서 실행 중인 Thread 집합에서 현재 수행중인 작업을 확인할 수 있습니다.

  • column 정보

           - ID : 프로세스 ID

           - USER : Thread에 접속하고 있는 Mysql 사용자

           - HOST : user가 접속하고 있는 hostname, IP address

           - DB : 현재 사용 중인 DB

           - COMMAND : Thread 실행 중인 명령 ex) sleep, kill,Query 등

           - TIME : Thread가 현재 상태를 유지한 시간 

           - STATE : Thread의 상태 ex) Starting, Rolling back, System lock 등

           - INFO : 실행 중인 SQL 쿼리

           - TIME_MS : Thread가 현재 상태를 유지한 시간(ms)

           - MEMORY_USED : Thread가 사용 중인 메모리(바이트)

           - MAX_MEMORY_USER : Threade가 사용한 최대 메모리(바이트)


show process

  • 실행 중인 Thread를 보여줍니다.
  • information_schema.PROCESSLIST table 또는 mysqladmin processlist 명령으로 확인할 수 있습니다.

 

모니터링

  • 상태 확인
show status;
  • threade 확인
show status like'threads%';


Threade kill 

  • 서비스 운영 도중 LOCK 현상이 발생하거나 DB에 너무 많은 부하를 주게 되어 DB 성능에 문제를 주게 되는 경우 혹은 Sleep 상태로 존재하는 Thread가 많은 경우
KILL [ID];


  •  SLEEP 상태인 Threade Kill
SELECT concat('KILL ',id,';')
FROM information_schema.processlist
WHERE command='sleep'
INTO OUTFILE '/home/process_kill.agile';

source /home/process_kill.agile;

마무리

  • column - COMMAND에 대한 참고 사이트

           - https://dev.mysql.com/doc/refman/8.0/en/thread-commands.html

  • column - STATE에 대한 참고 사이트

           - https://dev.mysql.com/doc/refman/8.0/en/general-thread-states.html

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300