느린 질의를 추측하지 마
EXPLAIN은 실행하지 않고 계획기의 선택을 보여주고, EXPLAIN ANALYZE는 실제로 실행해 시간과 행 수를 기록해. BUFFERS를 더하면 캐시와 디스크에서 읽은 블록도 볼 수 있어.
예상과 실제를 비교해
큰 테이블의 Seq Scan은 빠진 색인을, 예상 행과 실제 행의 큰 차이는 낡은 통계를 의심해. 비용이 집중된 노드를 먼저 보고, Buffers: shared read가 크면 디스크 접근과 작업 집합을 확인해. Nested Loop의 반복 횟수가 크면 숨은 N+1인지 살피고 hash join이 더 나은지도 비교해.
느린 질의를 자동으로 남겨
auto_explain의 log_min_duration을 1s처럼 정하면 임계값을 넘긴 실행 계획을 로그에 남길 수 있어. depesz나 pgMustard로 시각화해도 좋아.
auto_explain을 켜고 1초를 기준으로 삼았다면 1초를 넘는 질의가 실제 실행 계획과 함께 남는지 확인해.