가장 중요한 단일 디버깅 도구
EXPLAIN 이 쿼리 실행 안 하고 planner 의 선택된 실행 plan 보여줌. EXPLAIN ANALYZE 가 쿼리 실행 + 실제 시간, 행 카운트, buffer 사용 보고. 함께: "이 쿼리 왜 느리고, DB 가 어떻게 동작할 거라 생각하나?"
찾을 거
- 큰 테이블에 Seq Scan = 잠재 누락 인덱스.
- 예상 행 vs 실제 행 크게 다름 = stale 통계; ANALYZE 실행.
- 단일 노드의 높은 비용 = 시간이 가는 곳; 거기 집중.
- Buffers: shared read=... = 디스크에 감; 캐시 워밍 또는 working set 줄이기 고려.
- Nested Loop 의 Loops > 1 = 위장한 N+1; 가끔 hash join 이 훨씬 빠름.
auto_explain extension
duration 임계값 (예: 1 초) 으로 auto_explain 켜기. 모든 느린 쿼리가 자동 EXPLAIN ANALYZE 로깅. 모든 쿼리 수동 실행 안 하고 느린 쿼리 찾는 방법.