Database
PostgreSQL 쿼리 성능 튜닝 가이드
PostgreSQL 쿼리 튜닝을 EXPLAIN ANALYZE 중심으로 실전 절차에 맞춰 정리합니다.
PostgreSQL 쿼리 성능 튜닝 가이드
PostgreSQL 튜닝의 출발점은 항상 같습니다. "느린 쿼리를 추측하지 말고 계획과 실행 통계를 본다."
기본 절차
- 느린 쿼리 수집(
pg_stat_statements) EXPLAIN (ANALYZE, BUFFERS)확인- 병목 유형 분류(스캔/조인/정렬/락)
- 인덱스/쿼리/스키마 중 가장 작은 변경부터 적용
- 재측정
자주 맞는 병목
1) Seq Scan 과다
- 필터 컬럼 인덱스 부재
- 통계 부정확
해결: 인덱스 추가 + ANALYZE + 조건식 단순화
2) 잘못된 복합 인덱스 순서
- 등호 조건 컬럼을 앞쪽에
- 범위 조건 컬럼을 뒤쪽에
3) 과도한 정렬/해시 spill
work_mem과소- 불필요한
ORDER BY
4) 불필요한 인덱스 증가
읽기는 빨라져도 쓰기/유지비가 증가합니다.
운영 체크리스트
- 배포 전 핵심 쿼리 계획 비교
- 느린 쿼리 상위 10개 지속 추적
- 사용되지 않는 인덱스 정기 정리
- 대량 데이터 변동 후
ANALYZE실행
결론
PostgreSQL 튜닝은 마법 옵션이 아니라 측정-가설-검증 루프입니다. 단일 쿼리 최적화보다 반복 가능한 튜닝 프로세스를 먼저 만드세요.