본문으로 건너뛰기

7.4 SQL 성능 runbook

느린 query 대응은 탐지, 영향 제한, 원인 분류, 변경, 검증 순서로 진행합니다.

첫 진단

  1. 사용자 영향, query fingerprint, parameter를 확인합니다.
  2. Lock wait인지 CPU와 I/O 실행인지 분리합니다.
  3. 호출량 증가와 한 번의 latency 증가를 구분합니다.
  4. 최근 schema, statistics, data, version 변화를 확인합니다.
  5. 실제 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 기준이 남아야 합니다.