본문으로 건너뛰기
autovacuum_vacuum_cost_limit

autovacuum_vacuum_cost_limit

버전기본값context타입
14sighupinteger
15sighupinteger
16sighupinteger
17sighupinteger
18sighupinteger
19sighupinteger

autovacuum이 수행하는 VACUUM에 적용할 cost limit, 즉 vacuum이 한 번 쉬기 전까지 누적할 수 있는 I/O 비용 한도를 정한다. 기본값은 -1로, 이때는 일반 vacuum_cost_limit 값(기본 200)을 따른다.

vacuum은 페이지 접근마다 비용을 누적하다가 이 한도에 도달하면 autovacuum_vacuum_cost_delay만큼 잠든다. 따라서 limit이 클수록 vacuum이 덜 쉬고 빠르게 진행되며, 작을수록 서비스 I/O에 양보하는 대신 느려진다. 중요한 특징은 이 값이 실행 중인 autovacuum worker들에게 비례 배분된다는 점이다. worker가 여러 개 돌아도 각 worker 한도의 합이 이 값을 넘지 않으므로, autovacuum_max_workers를 늘려도 이 값을 그대로 두면 전체 vacuum 처리량은 늘지 않는다. postgresql.conf나 서버 커맨드라인에서 설정하며, 개별 테이블의 storage parameter로 덮어쓸 수 있다.

운영 노트: 쓰기가 많은 시스템에서 autovacuum이 만성적으로 밀린다면 이 값을 올리는 것이 가장 직접적인 처방이다. worker 수를 늘릴 때는 비례 배분 특성 때문에 이 값도 같은 비율로 올려야 의도한 효과가 난다. 참고로 테이블 단위 storage parameter로 cost limit을 지정한 worker는 전역 배분 대상에서 빠진다.

출처: PostgreSQL 18 문서