autovacuum_vacuum_max_threshold
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 18 | 100 | sighup | integer |
| 19 | 100 | sighup | integer |
autovacuum이 VACUUM을 일으키는 데 필요한 갱신·삭제 tuple 수의 상한을 정한다. 즉 autovacuum_vacuum_threshold와 autovacuum_vacuum_scale_factor로 계산된 임계값에 씌우는 뚜껑이다. 기본값은 1억(100,000,000)이며, -1로 설정하면 상한을 적용하지 않는다.
PostgreSQL 18에서 도입됐다. 비율 기반인 autovacuum_vacuum_scale_factor는 테이블이 커질수록 임계값도 함께 커지는 구조라, 수십억 행짜리 테이블에서는 vacuum 한 번을 기다리는 동안 dead tuple이 수억 건씩 쌓이는 문제가 있었다. 종래에는 이런 테이블마다 storage parameter로 scale factor를 낮춰 주는 수작업이 필요했는데, 이 파라미터가 전역 상한을 제공하면서 아무리 큰 테이블이라도 dead tuple이 기본 1억 건에 도달하면 vacuum이 실행된다. postgresql.conf나 서버 커맨드라인에서 설정하며, 개별 테이블의 storage parameter로 덮어쓸 수 있다.
운영 노트: 기본값 1억은 상당히 보수적인 안전망이다. 초대형 테이블의 bloat을 적극적으로 관리하려면 이 값을 낮추거나, 해당 테이블에 storage parameter로 별도 임계값을 잡는 방식을 병행하는 것이 좋다. 17 이하 버전에서는 이 파라미터가 없으므로 테이블 단위 scale factor 조정이 여전히 필요하다.
출처: PostgreSQL 18 문서