autovacuum
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | — | sighup | boolean |
| 15 | — | sighup | boolean |
| 16 | — | sighup | boolean |
| 17 | — | sighup | boolean |
| 18 | — | sighup | boolean |
| 19 | — | sighup | boolean |
서버가 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 문서