※ 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을 줄이고, 필요한 순간에 정확히 동작하도록 최적화할 수 있습니다.
오늘은 여기까지~
'PostgreSQL' 카테고리의 다른 글
PostgreSQL: pgpool-II 로드밸런서 전용 세팅 (0) | 2025.04.15 |
---|---|
PostgreSQL: LSN → WAL 파일명 변환 쉘 스크립트 (0) | 2025.03.18 |
PostgreSQL: pgBackRest 설치 및 사용법 (0) | 2025.03.18 |
PostgreSQL: 14버전 이하 매뉴얼 온라인-백업, 복원 (0) | 2025.03.16 |
PostgreSQL: pgpool-II 설치 및 사용법 (0) | 2025.03.10 |