seq_page_cost
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | 1 | user | string |
| 15 | 1 | user | string |
| 16 | 1 | user | string |
| 17 | 1 | user | string |
| 18 | 1 | user | string |
| 19 | 1 | user | string |
연속 읽기(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_cost와 random_page_cost를 함께 낮춰(예: 두 값 모두 1 미만) CPU 비용 파라미터와의 균형을 맞추는 튜닝도 있다.
운영 노트: 기준 단위를 움직이면 모든 plan 비교가 함께 움직이므로,
seq_page_cost 단독 조정보다는 random_page_cost와의 비율을 관리하는 것이 안전하다. random_page_cost를 seq_page_cost보다 낮게 두는 설정은 물리적으로 의미가 없으니 피한다.출처: PostgreSQL 18 문서