autovacuum_analyze_scale_factor
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | 0 | sighup | string |
| 15 | 0 | sighup | string |
| 16 | 0 | sighup | string |
| 17 | 0 | sighup | string |
| 18 | 0 | sighup | string |
| 19 | 0 | sighup | string |
autovacuum이 ANALYZE를 일으킬지 판단할 때, autovacuum_analyze_threshold에 더할 값을 테이블 크기의 비율로 정한다. 기본값은 0.1로, 테이블 크기의 10%에 해당한다.
autovacuum은 마지막 analyze 이후 삽입·갱신·삭제된 tuple 수가 autovacuum_analyze_threshold + autovacuum_analyze_scale_factor × 테이블 행 수를 넘으면 해당 테이블에 ANALYZE를 실행한다. autovacuum_vacuum_scale_factor(기본 0.2)와 짝을 이루는 파라미터인데, 기본값이 절반인 이유는 통계가 낡으면 실행 계획이 바로 나빠지므로 analyze는 vacuum보다 자주 도는 편이 낫기 때문이다. postgresql.conf나 서버 커맨드라인에서 설정하며, 개별 테이블의 storage parameter로 덮어쓸 수 있다.
운영 노트: 행 수가 수억 건인 대형 테이블은 10%라도 절대량이 커서 통계 갱신이 한참 늦어질 수 있다. 최근 데이터 위주로 조회하는 시계열 테이블처럼 분포 변화에 민감한 경우, 테이블 단위로
autovacuum_analyze_scale_factor를 낮춰 analyze 주기를 당기면 실행 계획 품질을 지키는 데 도움이 된다.출처: PostgreSQL 18 문서