PostgreSQL

PostgreSQL: Autovacuum 파라미터

dewstream 2025. 4. 26. 08:00

PostgreSQL: Autovacuum Parameters.

※ Version: PostgreSQL 16.

 

안녕하세요. 듀스트림입니다.

 

오늘은 유지관리에서 중요한 Autovacuum 파라미터들을 알아보고 튜닝 포인트와 주의사항에 대해 알아보겠습니다.

 

내용에 나오는 track_counts 등의 파라미터는 이전 포스팅 참고 부탁드립니다.

 

PostgreSQL: Run-time Statistics 파라미터

※ PostgreSQL: Run-time Statistics Parameters.※ Version: PostgreSQL 16. 안녕하세요. 듀스트림입니다. 오늘은 가볍게 런타임 통계(Run-time Statistics) 파라미터들을 알아보고 튜닝 포인트와 주의사항에 대해 알아

dewstream.tistory.com


1. autovacuum

  • Default: on
  • description (ENG): Enables the autovacuum feature globally (requires track_counts = on).
  • description (한글): autovacuum 기능 전체 활성화 여부 (track_counts 값이 true여야 함).
  • tuning point: 대부분의 운영환경에서 반드시 on 유지 권장.
  • caution: track_counts가 off일 경우 autovacuum이 작동하지 않음.
  • Application Method: restart.

 

2. autovacuum_vacuum_threshold

  • Default: 50
  • description (ENG): Minimum number of updated/deleted tuples to trigger VACUUM.
  • description (한글): 업데이트/삭제된 튜플 수가 이 수 이상일 때 VACUUM 실행.
  • tuning point: 소규모 테이블은 수치를 줄이고 대규모 테이블은 scale_factor 조정이 더 중요.
  • caution: 너무 작으면 과도한 autovacuum 실행 가능성.
  • Application Method: reload.

 

3. autovacuum_analyze_threshold

  • Default: 50
  • description (ENG): Minimum number of modified tuples to trigger ANALYZE.
  • description (한글): 삽입/업데이트/삭제된 튜플 수가 이 수 이상일 때 ANALYZE 실행.
  • tuning point: 잦은 통계 갱신이 필요한 OLTP 시스템에서는 값 조절 필요.
  • caution: 너무 크면 통계 갱신 지연 → 실행계획 부정확.
  • Application Method: reload.

 

4. autovacuum_vacuum_scale_factor

  • Default: 0.2
  • description (ENG): Proportion of table size that must be modified to trigger VACUUM.
  • description (한글): 테이블 크기의 20%에 해당하는 튜플 변경 시 VACUUM 실행.
  • tuning point: 대용량 테이블의 경우 0.1 이하로 줄이는 것이 권장됨.
  • caution: 기본값은 너무 보수적일 수 있음.
  • Application Method: reload.

 

5. autovacuum_analyze_scale_factor

  • Default: 0.1
  • description (ENG): Proportion of table size that must be modified to trigger ANALYZE.
  • description (한글): 테이블 크기의 10%에 해당하는 튜플 변경 시 ANALYZE 실행.
  • tuning point: 쿼리 성능이 통계에 민감한 테이블은 더 낮게 설정.
  • caution: scale_factor가 너무 높으면 실행 계획 부정확 가능성.
  • Application Method: reload.

 

6. autovacuum_vacuum_cost_delay

  • Default: 2 ms
  • description (ENG): Time to wait between VACUUM cost units (in milliseconds).
  • description (한글): 자동 VACUUM 중 비용 한도 초과 시 대기할 지연 시간.
  • tuning point: I/O 자원이 여유 있을 때는 줄이는 것도 고려.
  • caution: 너무 작으면 시스템 전체 성능에 영향, 너무 크면 VACUUM 지연.
  • Application Method: reload.

 

7. autovacuum_vacuum_cost_limit

  • Default: -1
  • description (ENG): Cost limit per autovacuum worker; -1 follows vacuum_cost_limit.
  • description (한글): 자동 VACUUM 워커당 비용 한도; -1이면 vacuum_cost_limit 값 따름.
  • tuning point: 작업 속도가 느릴 경우 값을 늘려서 더 빠르게 처리 가능.
  • caution: 너무 크면 다른 쿼리와 자원 충돌 가능.
  • Application Method: reload.

 

8. autovacuum_freeze_max_age

  • Default: 200000000
  • description (ENG): Max age before forced VACUUM to prevent transaction ID wraparound.
  • description (한글): 트랜잭션 ID wraparound 방지를 위해 강제 VACUUM을 수행하는 최대 트랜잭션 수.
  • tuning point: 가능하면 기본값 유지. 증가 시 위험 부담 커짐.
  • caution: wraparound 발생 시 데이터 손실 가능.
  • Application Method: reload.

 

9. autovacuum_multixact_freeze_max_age

  • Default: 400000000
  • description (ENG): Max multixact age before forced VACUUM.
  • description (한글): multixact wraparound 방지를 위해 강제 VACUUM을 수행하는 최대 multixact 수.
  • tuning point: 다중 트랜잭션 활용 많은 환경에서는 값 모니터링 필수.
  • caution: wraparound 방지를 위한 최후의 보호 장치.
  • Application Method: reload.

 

10. autovacuum_vacuum_insert_threshold

  • Default: 1000
  • description (ENG): Minimum number of inserted tuples to trigger insert-targeted VACUUM.
  • description (한글): 삽입된 튜플 수가 이 수 이상일 때 VACUUM 실행.
  • tuning point: write-heavy 테이블에서 효과적 조정 필요.
  • caution: 너무 낮으면 오히려 과도한 VACUUM 빈도 유발.
  • Application Method: reload.

 

11. autovacuum_vacuum_insert_scale_factor

  • Default: 0.2
  • description (ENG): Inserted tuples threshold as proportion of table size.
  • description (한글): 테이블 크기의 20%에 해당하는 삽입 튜플 수일 때 VACUUM 실행.
  • tuning point: INSERT 빈도 높은 테이블은 scale_factor 조정 고려.
  • caution: scale_factor가 너무 높으면 VACUUM 지연 가능성.
  • Application Method: reload.

이번 포스팅에서는 Autovacuum의 주요 파라미터들을 하나씩 살펴보고, 각각의 역할과 조정 시 주의할 점까지 정리해보았습니다.
특히, 대용량 시스템이나 삽입이 빈번한 테이블에서는 scale_factor와 insert_threshold 값을 적극적으로 조정함으로써 불필요한 VACUUM을 줄이고, 필요한 순간에 정확히 동작하도록 최적화할 수 있습니다.

 

오늘은 여기까지~