짧은 전체 slow log를 수집해 pt-query-digest로 분석
MySQL성능명령어
-- Temporary full capture (e.g. 10 minutes); only new connections are affected
SET GLOBAL slow_query_log_file = '/var/lib/mysql/slow.log';
SET GLOBAL log_slow_extra = ON;
SET GLOBAL long_query_time = 0;
SET GLOBAL slow_query_log = ON;
-- ... then return to the normal threshold
SET GLOBAL long_query_time = 1;
# Shell: top 10 queries by total time
pt-query-digest --limit=10 --order-by=Query_time:sum --noversion-check /var/lib/mysql/slow.log > /tmp/digest.txt
pt-query-digest --since='2026-10-08 09:00:00' --until='2026-10-08 10:00:00' --filter '$event->{db} && $event->{db} eq "shop"' --report-format=profile --noversion-check /var/lib/mysql/slow.log하는 일
long_query_time=0으로 짧은 구간 동안 모든 쿼리를 수집한다. pt-query-digest는 이를 fingerprint별로 그룹화하고 총/평균/p95 시간, 검사 행 수, 샘플 쿼리가 포함된 순위 리포트를 만든다.
사용 시점
performance_schema digest로 부족할 때: 전체 문장 텍스트와 실제 파라미터를 이용한 분석, 배포 전후 비교, 다른 호스트에서의 오프라인 검토.
주의
long_query_time은 세션 시작 시 전역 값에서 복사된다. 풀에 있는 기존 연결은 재연결하기 전까지 새 임계값을 보지 못한다. long_query_time=0은 바쁜 서버에서 초당 수천 건을 기록하므로 디스크 공간과 IO를 주시하고, 구간을 짧게 유지하며 반드시 원복한다. 분석용 파일은 운영 서버 밖으로 복사한다. pt-query-digest를 실행하는 사용자는 파일 읽기 권한이 필요하다(mode 640, mysql:mysql).