본문으로 건너뛰기

seq_page_cost

버전기본값context타입
141userstring
151userstring
161userstring
171userstring
181userstring
191userstring

연속 읽기(sequential fetch)의 일부로 읽는 디스크 page 하나의 비용을 planner가 어떻게 추정할지 정한다. 기본값은 1.0이다. 특정 tablespace에 속한 테이블·인덱스에 대해서는 ALTER TABLESPACE로 같은 이름의 옵션을 설정해 따로 덮어쓸 수 있다.

이 값은 PostgreSQL 비용 모델의 기준 단위 역할을 한다. random_page_cost, cpu_tuple_cost 같은 다른 비용 파라미터는 사실상 이 값에 대한 상대값으로 해석되므로, 관례상 seq_page_cost는 1.0으로 고정해 두고 나머지를 storage와 워크로드 특성에 맞게 조정한다. 특히 random_page_cost와의 비율이 planner의 sequential scan 대 index scan 선호를 좌우한다는 점은 random_page_cost 항목에서 설명한 그대로다.

데이터가 사실상 전부 메모리 캐시에 올라가는 환경이라면 page 읽기 비용 자체가 CPU 비용 대비 과대평가된 셈이므로, seq_page_costrandom_page_cost를 함께 낮춰(예: 두 값 모두 1 미만) CPU 비용 파라미터와의 균형을 맞추는 튜닝도 있다.

운영 노트: 기준 단위를 움직이면 모든 plan 비교가 함께 움직이므로, seq_page_cost 단독 조정보다는 random_page_cost와의 비율을 관리하는 것이 안전하다. random_page_costseq_page_cost보다 낮게 두는 설정은 물리적으로 의미가 없으니 피한다.

출처: PostgreSQL 18 문서