본문으로 건너뛰기
effective_cache_size

effective_cache_size

버전기본값context타입
144 gigabytes ( 4GB )userinteger
154 gigabytes ( 4GB )userinteger
164 gigabytes ( 4GB )userinteger
174 gigabytes ( 4GB )userinteger
184 gigabytes ( 4GB )userinteger
194 gigabytes ( 4GB )userinteger

하나의 쿼리가 쓸 수 있는 디스크 캐시의 유효 크기를 planner가 어떻게 가정할지 정한다. 단위 없이 값을 주면 블록(보통 8kB) 단위로 해석하며, 기본값은 4GB다.

이 값은 인덱스 사용 비용을 추정하는 데 쓰인다. 값이 크면 planner는 데이터가 캐시에 있을 가능성이 높다고 보고 index scan을 선호하고, 값이 작으면 sequential scan 쪽으로 기운다. 설정할 때는 PostgreSQL의 shared buffers와 더불어, 커널의 disk cache 중 PostgreSQL 데이터 파일에 쓰일 부분까지 함께 고려한다. 또 서로 다른 테이블에 동시에 도는 쿼리들이 캐시 공간을 나눠 쓴다는 점도 감안해야 한다.

중요한 점은 이 파라미터가 실제 메모리 할당과는 무관하다는 것이다. shared memory 크기를 바꾸지도 않고 커널 disk cache를 예약하지도 않는다. 오로지 planner의 비용 추정에만 쓰이는 값이다. 또한 쿼리 사이에 데이터가 캐시에 남아 있다고 가정하지도 않는다.

운영 노트: 메모리를 직접 차지하지 않으므로 비교적 안전하게 키울 수 있다. 흔히 시스템 RAM의 50~75% 정도로 잡아 planner가 index scan을 적절히 선택하도록 유도한다. 너무 작게 두면 캐시에 충분히 들어가는 데이터인데도 불필요한 sequential scan을 고를 수 있다.

출처: PostgreSQL 18 문서