vacuum_cost_page_miss
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | 2 | user | integer |
| 15 | 2 | user | integer |
| 16 | 2 | user | integer |
| 17 | 2 | user | integer |
| 18 | 2 | user | integer |
| 19 | 2 | user | integer |
cost 기반 vacuum delay 체계에서, vacuum이 디스크에서 읽어와야 하는 buffer를 처리할 때 부과하는 추정 비용이다. 기본값은 2다.
buffer pool을 잠그고, 공유 hash table을 조회하고, 원하는 블록을 디스크에서 읽어 들인 뒤 내용을 훑는 수고를 나타낸다. 캐시에 있는 페이지를 처리하는 vacuum_cost_page_hit(기본 1)보다 디스크 읽기만큼 비싸고, 블록을 dirty로 만드는 vacuum_cost_page_dirty(기본 20)보다는 싸다. 참고로 이 기본값 2는 PostgreSQL 14에서 10에서 하향된 것으로, 현대 스토리지에서 읽기 비용이 과대평가돼 있었다는 판단이 반영됐다.
vacuum이 누적한 비용의 합이 vacuum_cost_limit에 도달하면 프로세스는 vacuum_cost_delay만큼 잠들었다가 재개한다. 캐시에 없는 콜드 데이터를 vacuum할 때 이 비용이 주로 쌓이며, 값 자체를 바꾸기보다 vacuum_cost_limit과 delay로 전체 처리량을 조절하는 것이 일반적이다.
출처: PostgreSQL 18 문서