DBAtlas · 데이터베이스 운영 아틀라스

지금 실행 중인 작업: 활성 세션, 지연 시간, 락, 트랜잭션 (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 문제의 가장 흔한 원인이다.

DBAtlas에서 열기 →

관련 항목