enable_bitmapscan
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | on | user | boolean |
| 15 | on | user | boolean |
| 16 | on | user | boolean |
| 17 | on | user | boolean |
| 18 | on | user | boolean |
| 19 | on | user | boolean |
planner가 bitmap scan plan을 후보로 고려할지 정한다. 기본값은 on이다.
bitmap scan은 두 단계로 동작한다. 먼저 Bitmap Index Scan이 인덱스를 훑어 조건에 맞는 row의 위치를 메모리 안의 bitmap으로 모으고, 이어 Bitmap Heap Scan이 그 bitmap을 따라 테이블 page를 물리적 순서로 읽는다. page를 정렬된 순서로 한 번씩만 읽으므로 일반 index scan보다 random I/O가 줄어, 조건에 맞는 row가 어느 정도 많을 때 index scan과 sequential scan 사이의 중간 지대를 담당한다. 여러 인덱스의 bitmap을 AND/OR로 결합할 수 있다는 점도 장점이다.
운영 노트: off로 두는 것은 튜닝이 아니라 진단 도구다. planner가 bitmap scan을 고른 쿼리에서 세션 단위로 끄고 EXPLAIN (ANALYZE)를 비교하면 다른 scan 방식과의 cost 차이와 실제 성능 차이를 확인할 수 있다. 전역 설정에서 끄는 것은 피한다.
출처: PostgreSQL 18 문서