지금 실행 중인 작업: 활성 세션, 지연 시간, 락, 트랜잭션 (sys.session)
MySQL성능명령어
SELECT conn_id, user, db, command, state, time,
LEFT(current_statement, 100) AS current_statement,
statement_latency, progress, lock_latency,
rows_examined, full_scan, tmp_disk_tables,
trx_state, trx_latency, last_wait
FROM sys.session
WHERE command <> 'Sleep' OR trx_state = 'ACTIVE'
ORDER BY time DESC
LIMIT 25;하는 일
SHOW PROCESSLIST에 performance_schema 데이터를 더해 실행 중인 문장의 지연 시간, 진행률, 락 대기 시간, 검사 행 수, 풀 스캔/디스크 임시 테이블 정보, 열린 트랜잭션 상태를 한 행에 보여 준다. Sleep 상태이지만 트랜잭션을 열어 둔 세션도 나열한다.
사용 시점
장애 발생 후 처음 30초 동안: 어떤 쿼리가 얼마나 오래 실행 중인지, 누가 락을 기다리는지, 어떤 유휴 세션이 트랜잭션을 열어 두고 있는지 확인한다.
주의
sys.session은 performance_schema에 대해 여러 조인을 수행하므로 연결이 수천 개면 쿼리 자체가 몇 초 걸릴 수 있다. 빈번한 모니터링에는 x$ 뷰와 LIMIT을 사용한다. progress는 stage instrument가 활성화되어 있고 ALTER처럼 진행률을 보고하는 작업에서만 채워진다. trx_state=ACTIVE인 Sleep 세션은 autocommit=0을 쓰는 애플리케이션/커넥션 풀이 잊어버린 트랜잭션이며, 메타데이터 락과 purge 문제의 가장 흔한 원인이다.