vacuum_freeze_table_age
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | 150 million transactions | user | integer |
| 15 | 150 million transactions | user | integer |
| 16 | 150 million transactions | user | integer |
| 17 | 150 million transactions | user | integer |
| 18 | 150 million transactions | user | integer |
| 19 | 150 million transactions | user | integer |
테이블의 pg_class.relfrozenxid age가 이 값에 도달하면 VACUUM이 aggressive scan을 수행한다.
aggressive scan은 일반 VACUUM과 달리 dead tuple이 있을 법한 page만이 아니라 freeze되지 않은 XID나 MXID가 있을 수 있는 모든 page를 방문한다. 테이블 전체의 relfrozenxid를 실제로 전진시킬 수 있는 것이 이 aggressive scan이다. vacuum_freeze_min_age가 개별 XID를 언제 freeze할지 정한다면, 이 파라미터는 테이블 단위로 언제 전면적인 freeze 작업에 들어갈지를 정한다.
기본값은 1억 5,000만 transaction이다. 0부터 20억까지 설정할 수 있지만 VACUUM이 유효값을 autovacuum_freeze_max_age의 95%로 조용히 제한한다. 주기적인 수동 VACUUM이 anti-wraparound autovacuum이 강제 기동되기 전에 먼저 돌 기회를 주기 위해서다. age가 그마저 넘기면 autovacuum_freeze_max_age에서 autovacuum이 강제되고, 최후에는 vacuum_failsafe_age의 failsafe가 발동한다.
출처: PostgreSQL 18 문서