enable_partitionwise_join
| 버전 | 기본값 | 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 join, 즉 partitioned table끼리의 join을 대응하는 partition끼리의 join으로 분해하는 plan을 고려할지 정한다. 기본값은 off다.
현재는 join 조건이 partition key를 모두 포함하고, 양쪽 partition key의 데이터 타입이 같으며, 자식 partition 구성이 일대일로 맞아떨어질 때만 적용된다. 조건이 맞으면 큰 join 하나가 작은 join 여러 개로 쪼개져 각 join이 메모리 안에서 끝나기 쉬워지고, partition 단위 병렬화와도 결합할 수 있다.
기본값이 off인 이유는 enable_partitionwise_aggregate와 같다. 켜면 work_mem 제한을 받는 노드 수가 partition 수에 비례해 늘어 실행 중 메모리 사용량이 크게 증가할 수 있고, planning 비용(메모리·CPU)도 상당히 커진다.
운영 노트: 같은 기준으로 파티셔닝된 큰 테이블끼리의 join이 핵심 워크로드라면 세션 단위로 켜서 EXPLAIN과 실행 시간·메모리로 효과를 검증한 뒤 적용 범위를 정한다. 전역으로 켤 때는 partition 수가 많은 테이블의 planning 시간 증가를 감안해야 한다.
출처: PostgreSQL 18 문서