enable_partitionwise_aggregate
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | off | user | boolean |
| 15 | off | user | boolean |
| 16 | off | user | boolean |
| 17 | off | user | boolean |
| 18 | off | user | boolean |
| 19 | off | user | boolean |
planner가 partitionwise aggregation, 즉 partitioned table의 grouping·집계를 partition별로 나눠 수행하는 plan을 고려할지 정한다. 기본값은 off다.
GROUP BY 절에 partition key가 모두 포함되면 각 partition에서 집계를 끝까지 수행해 결과를 이어 붙일 수 있고, 그렇지 않으면 partition별 부분 집계(partial aggregation)만 하고 상위에서 마무리한다. 집계가 partition 단위로 쪼개지므로 partition별 인덱스나 병렬 처리와 결합해 큰 테이블의 집계가 빨라질 수 있다.
기본값이 off인 이유는 비용 때문이다. 켜면 plan에 등장하는, work_mem으로 메모리가 제한되는 노드의 수가 scan 대상 partition 수에 비례해 늘어나 쿼리 실행 중 전체 메모리 사용량이 크게 뛸 수 있다. planning 역시 메모리와 CPU를 눈에 띄게 더 쓴다.
운영 노트: 전역으로 켜기보다 partition key 기준 집계가 많은 세션이나 쿼리에서 선별적으로 켜고, EXPLAIN과 메모리 사용량을 확인한 뒤 적용 범위를 정하는 편이 안전하다. partition 수가 수백 개를 넘으면 planning 시간 증가부터 체감된다.
출처: PostgreSQL 18 문서