본문으로 건너뛰기

autovacuum

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

서버가 autovacuum launcher 데몬을 실행할지 여부를 정한다. 기본값은 on이다.

autovacuum launcher는 autovacuum_naptime 주기로 데이터베이스를 돌면서 worker를 띄우고, worker가 각 테이블의 dead tuple 누적량과 통계 변화를 보고 VACUUM·ANALYZE를 수행한다. 이 동작이 작동하려면 track_counts도 켜져 있어야 한다. 통계 수집이 꺼져 있으면 autovacuum이 판단할 근거 자체가 없기 때문이다. postgresql.conf나 서버 커맨드라인에서만 설정할 수 있고, 특정 테이블만 제외하고 싶으면 테이블 storage parameter로 개별 비활성화할 수 있다.

이 파라미터를 off로 두더라도 autovacuum이 완전히 멈추는 것은 아니다. transaction ID(XID) wraparound를 막아야 하는 상황이 오면, 즉 테이블 나이가 autovacuum_freeze_max_age에 도달하면 시스템이 강제로 autovacuum 프로세스를 띄운다.

운영 노트: autovacuum을 끄고 수동 vacuum으로만 운영하는 방식은 권장하지 않는다. bloat과 통계 노후화가 조용히 쌓이다가, 결국 wraparound 방지용 강제 vacuum이 가장 불리한 시점에 돌게 된다. autovacuum이 부담스럽다면 끄는 대신 autovacuum_vacuum_cost_delay·autovacuum_vacuum_cost_limit으로 I/O 강도를 조절하는 것이 정석이다.

출처: PostgreSQL 18 문서