본문으로 건너뛰기

vacuum_freeze_min_age

버전기본값context타입
1450 million transactionsuserinteger
1550 million transactionsuserinteger
1650 million transactionsuserinteger
1750 million transactionsuserinteger
1850 million transactionsuserinteger
1950 million transactionsuserinteger

VACUUM이 page의 오래된 XID를 freeze할지 판단하는 cutoff age를 transaction 수로 정한다.

PostgreSQL의 transaction ID(XID)는 32bit 순환 구조라, 오래된 XID는 주기적으로 freeze해 “충분히 과거"라는 표시로 바꿔야 XID wraparound를 피할 수 있다. VACUUM은 처리 중인 page에서 age가 이 값을 넘은 XID를 만나면 freeze한다. 값이 작을수록 미리미리 freeze해 나중에 몰아서 할 일이 줄어드는 대신 WAL 발생량이 늘고, 값이 크면 freeze를 미루는 만큼 aggressive scan 때 부담이 커진다.

기본값은 5,000만 transaction이다. 0부터 10억까지 설정할 수 있지만 VACUUM이 유효값을 autovacuum_freeze_max_age의 절반으로 조용히 제한해, 강제 autovacuum 사이 간격이 지나치게 짧아지지 않게 한다. wraparound 방어 체계에서 이 파라미터가 첫 단계(개별 XID의 freeze 시점)를 맡고, vacuum_freeze_table_age(aggressive scan 전환) → autovacuum_freeze_max_age(anti-wraparound autovacuum 강제) → vacuum_failsafe_age(failsafe)가 차례로 뒤를 받친다.

출처: PostgreSQL 18 문서