성능 디버깅이 데이터로 시작, 추측 아님
느린 시스템의 첫 본능이 인덱스 추가, 캐시 늘림, 쿼리 재작성. 프로 본능은 먼저 측정: 어느 쿼리가 느린지, 언제, 얼마나 자주, 얼마나. 숫자 없으면 모든 변경이 추측 + 대부분 추측이 더 나쁘게 만듦.
두 진단 차원
- Query-level — 어느 쿼리가 범인?
pg_stat_statements가 모든 쿼리를 total time, mean time, call count 로 ranking. - Wait-level — DB 가 뭐 기다림?
pg_stat_activity가 live 쿼리와 뭐 기다리는지 (lock, IO, CPU) 보여줌.
의심 순서
(1) 누락 인덱스, (2) lock 경쟁, (3) bloat / dead tuple, (4) 캐시 압박 / 디스크 IO, (5) 네트워크 / pooling. 거의 모든 "DB 느려" 사고가 이 리스트 어디 있음.