ACTIVE INCIDENT
00:00 elapsed
LABLAB-DB-09-SLOW-QUERYSEV-2
슬로우 쿼리 범인 찾기 — pg_stat_statements 랭킹
ELAPSED
00:00
PHASE
0 / 3
SLA
40분
🗄️ Database← 목록
INCIDENT RESPONSE
0 / 4 단계 완료
📚 PREREQUISITES
Lab
postgresql-slow-queryTheory
database/query-optimizationTRACK
DATABASE
SLA
40분
SEV
SEV-2
PHASES
2단계
ENV
local
INCOMING TICKET
“운영 티켓: "어젯밤부터 DB CPU가 80%에서 안 내려옵니다. 어떤 쿼리가 범인인지 모르겠어요. 대시보드엔 'DB 느림'이라고만 떠요."”
YOUR ROLE
주니어 인프라 엔지니어
IMPACT IF UNRESOLVED
DB CPU 80% 고착 — 전체 API 응답 지연, 피크 시간대 타임아웃 위험. 어떤 쿼리가 원인인지 특정 못 하면 무엇을 고칠지조차 모름
🚨INCIDENT BRIEF
운영 티켓이 올라왔습니다.
"어젯밤부터 DB CPU가 80%에서 안 내려와요. 대시보드엔 'DB 느림'이라고만 뜨는데, 정작 어떤 쿼리가 문제인지를 모르겠어요. 슬로우 쿼리 로그를 봐도 너무 많아서 뭐가 진짜 범인인지 가려지질 않아요."
"느린 쿼리 하나"를 찾는 게 아니라 "DB 부하를 가장 많이 차지하는 쿼리"를 찾는 게 핵심입니다. 1초짜리 쿼리 한 번보다 10ms 쿼리 10만 번이 CPU를 더 먹을 수 있습니다. pg_stat_statements로 총 소요시간 기준 순위를 매겨 진짜 범인을 특정하고, EXPLAIN으로 원인을 확인해 개선합니다.
⏱ 40분📊 중급🔧 2단계#postgresql#slow-query#pg_stat_statements#cpu
MISSION
1
pg_stat_statements 활성화 + 총 부하 기준 랭킹
pg_stat_statements 확장을 켜고 total_exec_time 기준으로 DB 부하를 가장 많이 차지하는 쿼리를 순위로 찾는다
2
범인 쿼리 EXPLAIN 해부 + 개선 → 부하 재측정
1위 쿼리를 EXPLAIN ANALYZE로 원인 진단하고, 인덱스/리라이트로 개선한 뒤 pg_stat_statements로 부하 감소를 확인한다
📌 선수 지식
• [실습] postgresql-slow-query
• [이론] database/query-optimization
ℹ️ 실습 환경
환경: local
필요 도구: bash, postgresql, psql
검증 스크립트:
/labs/lab-db-09-slow-query/scripts/verify.sh🔒
실습 실행은 Pro 플랜 전용입니다
인시던트 브리프와 학습 자료는 지금 바로 확인할 수 있습니다. 실제 실습 진행 및 터미널 사용은 Pro 플랜에서 가능합니다.
Pro로 업그레이드 →>_ LAB TERMINAL↔ 너비 조절
NOTES