Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 실행 중인 모든 쿼리 목록을 확인하는 방법

MySQL에서 현재 실행 중인 쿼리나 연결 상태를 확인하려면 SHOW PROCESSLIST 명령어를 사용하면 됩니다. 이 명령어는 현재 서버에 접속한 모든 스레드의 정보를 보여주므로, 느린 쿼리를 추적하거나 잠금(lock) 문제를 진단할 때 매우 유용합니다.

SHOW PROCESSLIST 기본 사용법

실행 중인 쿼리 목록을 확인하려면 아래와 같이 show processlist 명령어를 입력합니다.

mysql> SHOW processlist;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+| Id | User            | Host            | db       | Command | Time  | State                  | Info             |+----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+|  4 | event_scheduler | localhost       | NULL     | Daemon  | 13785 | Waiting on empty queue | NULL             ||  9 | root            | localhost:63587 | business | Query   |     0 | starting               | show processlist |+----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+2 rows in set (0.00 sec)

결과 컬럼 의미

  • Id : 해당 연결(스레드)의 고유 식별자입니다.
  • User : 연결을 맺은 사용자 계정입니다.
  • Host : 클라이언트가 접속한 호스트 주소와 포트입니다.
  • db : 현재 선택된 데이터베이스 이름입니다.
  • Command : 스레드가 수행 중인 작업 유형(Query, Sleep, Daemon 등)입니다.
  • Time : 현재 상태로 유지된 시간(초)입니다.
  • State : 스레드의 현재 실행 상태를 나타냅니다.
  • Info : 실행 중인 실제 SQL 문장이 표시됩니다.

세로 형태로 결과 출력하기 (SHOW FULL PROCESSLIST)

컬럼이 많아 가로로 출력된 결과를 읽기 어렵다면 \G 옵션을 사용하여 세로(수직) 형태로 깔끔하게 확인할 수 있습니다. 또한 FULL 키워드를 추가하면 Info 컬럼의 전체 쿼리 문자열이 잘리지 않고 표시됩니다.

mysql> SHOW FULL PROCESSLIST\G;

위 쿼리의 실행 결과는 다음과 같습니다.

*************************** 1. row ***************************     Id: 4   User: event_scheduler   Host: localhost     db: NULLCommand: Daemon   Time: 17385  State: Waiting on empty queue   Info: NULL*************************** 2. row ***************************     Id: 9   User: root   Host: localhost:63587     db: businessCommand: Query   Time: 0  State: starting   Info: SHOW FULL PROCESSLIST2 rows in set (0.00 sec)

참고 사항

일반 사용자는 자신의 계정으로 실행된 스레드만 볼 수 있으며, PROCESS 권한이 있는 사용자(예: root)는 서버의 모든 스레드를 조회할 수 있습니다. 또한 MySQL Workbench나 phpMyAdmin 같은 GUI 도구의 'Server Connections' 메뉴에서도 동일한 정보를 손쉽게 확인할 수 있습니다. 장시간 실행되는 쿼리를 발견하면 KILL [thread_id]; 명령어로 해당 프로세스를 종료할 수도 있습니다.