7.4 SQL 성능 runbook
느린 query 대응은 탐지, 영향 제한, 원인 분류, 변경, 검증 순서로 진행합니다.
첫 진단
- 사용자 영향, query fingerprint, parameter를 확인합니다.
- Lock wait인지 CPU와 I/O 실행인지 분리합니다.
- 호출량 증가와 한 번의 latency 증가를 구분합니다.
- 최근 schema, statistics, data, version 변화를 확인합니다.
- 실제 plan을 안전한 방법으로 확보합니다.
원인 분류
- Estimate: statistics freshness, skew, correlation
- Access: scan type, index, heap fetch
- Join: outer rows, loops, hash batch, sort
- Memory: temp spill, concurrency
- Contention: lock, I/O, CPU, connection pool
- Workload: calls, result size, retry, N+1
변경 우선순위
잘못된 result나 timeout을 막는 완화가 먼저일 수 있습니다. Query cancel, traffic shaping, feature rollback, parameter 제한을 평가하고, permanent fix는 staging과 canary에서 검증합니다.
변경 후에는 query 하나만 보지 않고 host와 replica 안전 지표를 확인합니다. Incident 종료 뒤 regression test, dashboard, statistics policy와 schema review checklist를 갱신합니다.
Runbook의 결과는 “Index 추가”가 아니라 증상, 증거, 선택한 변경, 반증된 가설, rollback 기준이 남아야 합니다.