본문으로 건너뛰기
vacuum_cost_limit

vacuum_cost_limit

버전기본값context타입
14200userinteger
15200userinteger
16200userinteger
17200userinteger
18200userinteger
19200userinteger

cost 기반 vacuum delay 체계에서, vacuum 프로세스가 vacuum_cost_delay만큼 잠들게 되는 누적 비용의 한도를 정한다. 기본값은 200이다.

vacuum은 페이지를 처리할 때마다 작업 종류별 비용(vacuum_cost_page_hit, vacuum_cost_page_miss, vacuum_cost_page_dirty)을 누적한다. 그 합이 이 한도에 도달하면 vacuum_cost_delay만큼 잠들었다가 카운터를 0으로 리셋하고 작업을 재개한다. 즉 delay가 일정하다면 이 값이 클수록 잠들기 전까지 더 많은 일을 하므로 vacuum이 빨라지고, 작을수록 자주 쉬어 느려진다.

수동 VACUUMvacuum_cost_delay 기본값이 0이라 이 한도가 의미가 없지만, autovacuum은 기본적으로 cost 기반 delay가 켜져 있어(autovacuum_vacuum_cost_delay 기본 2ms) 이 값이 autovacuum 처리량을 직접 좌우한다. autovacuum_vacuum_cost_limit이 기본값 -1이면 autovacuum도 이 값을 그대로 물려받는다.

운영 노트: autovacuum이 큰 테이블을 따라가지 못한다면 delay를 줄이는 것과 함께 이 값을 올리는 것이 대표적인 처방이다. 값을 올린 만큼 vacuum의 순간 I/O 사용량이 커지므로 스토리지 여력을 보면서 단계적으로 조정한다.

출처: PostgreSQL 18 문서