effective_cache_size
하나의 쿼리가 쓸 수 있는 디스크 캐시의 유효 크기를 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 문서