피드로 돌아가기
The Autovacuum Scale Factor Problem at Scale - Know Your Defaults
Dev.toDev.to
Database

Scale Factor로 인한 대규모 테이블 Autovacuum 지연 및 Bloat 해결 전략

The Autovacuum Scale Factor Problem at Scale - Know Your Defaults

Franck Pachot2026년 5월 26일8intermediate

Context

PostgreSQL은 Base Threshold와 Scale Factor를 조합한 하이브리드 방식으로 Autovacuum을 트리거함. 대규모 테이블에서 Cold Data가 증가할수록 임계값이 비례적으로 상승하여 Hot Data의 통계 갱신 및 Dead Tuple 정리가 지연되는 구조적 한계 존재.

Technical Solution

  • autovacuum_vacuum_max_threshold 도입을 통한 유지보수 트리거의 절대적 상한선(Hard Ceiling) 설정
  • Scale Factor에 의한 무제한적 임계값 상승을 억제하여 대규모 테이블의 최소 유지보수 주기 보장
  • autovacuum_worker_slots와 autovacuum_max_workers의 역할 분리를 통한 가용 슬롯 선점 및 동적 워커 수 조정 구조 채택
  • DB 재시작 없는 설정 반영(pg_reload_conf)을 통해 워크로드 부하에 따른 유연한 리소스 할당 구현
  • Table Partitioning 도입으로 데이터 집합을 분리하여 각 파티션별 독립적 Scale Factor 적용 및 트리거 빈도 최적화

- 대규모 테이블 도입 시 기본 autovacuum_vacuum_max_threshold 값이 비즈니스 허용 범위 내인지 검토 - Cold Data 비중이 높은 테이블의 경우 Table-level storage parameter로 개별 Scale Factor 하향 조정 고려 - 정기적인 n_mod_since_analyze 및 n_mod_since_vacuum 지표 모니터링을 통한 통계 최신성 확인 - 유지보수 빈도 증가에 따른 I/O 부하 발생 시 autovacuum_max_workers의 동적 상향 조정 검토

원문 읽기