ACTIVE INCIDENT
00:00 elapsed
LABLAB-DB-02-SLOW-QUERYSEV-2
PostgreSQL 슬로우 쿼리 진단 및 최적화
ELAPSED
00:00
PHASE
0 / 7
SLA
40분
🗄️ Database
← 목록
INCIDENT RESPONSE
0 / 8 단계 완료
📚 PREREQUISITES
Labpostgresql-setup
Theorydatabase/query-optimization
Theorylinux/service-management
TRACK
DATABASE
SLA
40분
SEV
SEV-2
PHASES
6단계
ENV
local
INCOMING TICKET
슬랙 경보: "주문 목록 API 평균 응답 시간 10초 초과 — 어제 오후 배포 없이 갑자기 느려짐, DB 쪽 원인 의심"
YOUR ROLE
주니어 인프라 엔지니어
IMPACT IF UNRESOLVED
주문 목록 API 전체 지연 — 사용자 이탈 및 매출 손실. 원인 파악 없이 재배포하면 문제 반복
🚨INCIDENT BRIEF
앱팀에서 슬랙 메시지가 왔습니다.
"어제부터 주문 목록 API가 10초 이상 걸려요. 어제 오후부터 갑자기 느려졌는데, 배포는 없었거든요. DB 쪽 문제 같은데 확인해줄 수 있어요?"
PostgreSQL 서버에 접속해 슬로우 쿼리를 식별하고, 병목 원인을 분석한 뒤 인덱스를 추가해 응답 시간을 정상화합니다.
⏱ 40분📊 중급🔧 6단계#postgresql#slow-query#index#explain-analyze
MISSION
1
슬로우 쿼리 로그 활성화
log_min_duration_statement을 설정해 1초 이상 쿼리를 로그에 기록한다
2
pg_stat_statements 확장 활성화
pg_stat_statements 확장을 설치하고 상위 슬로우 쿼리를 조회한다
3
EXPLAIN ANALYZE로 실행 계획 분석
EXPLAIN ANALYZE를 실행해 Seq Scan과 Index Scan을 구분하고 병목을 파악한다
4
인덱스 생성으로 성능 개선
CREATE INDEX CONCURRENTLY로 프로덕션 영향 없이 인덱스를 추가한다
5
캐시 적중률 확인
pg_stat_bgwriter와 pg_statio_user_tables로 버퍼 캐시 히트율을 계산한다
6
쿼리 성능 개선 보고서 작성
pg_stat_statements 분석 결과와 쿼리 튜닝 before/after 수치를 비교 보고한다
📌 선수 지식
• [실습] postgresql-setup
• [이론] database/query-optimization
• [이론] linux/service-management
ℹ️ 실습 환경
환경: local
필요 도구: bash, postgresql, psql
검증 스크립트: /labs/lab-db-02-slow-query/scripts/verify.sh
🔒
실습 실행은 Pro 플랜 전용입니다
인시던트 브리프와 학습 자료는 지금 바로 확인할 수 있습니다. 실제 실습 진행 및 터미널 사용은 Pro 플랜에서 가능합니다.
Pro로 업그레이드 →
>_ LAB TERMINAL↔ 너비 조절
NOTES