autovacuum_freeze_max_age
Requires a restarttuned by pgconfiguratortransaction age (XIDs)
The transaction-age at which a forced anti-wraparound vacuum must run.
What pgconfigurator would set
32 GB · 8 vCPU · NVMe · OLTP
Computing…
Tune for your exact server → /tunecomputed in your browser · nothing uploaded
What it does
PostgreSQL must 'freeze' old rows before the 32-bit transaction-ID counter wraps around. This sets the maximum age (in transactions) a table may reach before autovacuum forces an aggressive freeze vacuum — even if autovacuum is otherwise off.
How to tune it
The default (200 million) is safe for most. On very high-transaction-rate systems, freeze vacuums can pile up; some operators raise it (carefully, up to a couple of billion) to spread them out — but raising it too far shrinks your wraparound safety margin. Monitor table age via pg_class.relfrozenxid / age().
FAQ
- What is transaction-ID wraparound?
- PostgreSQL numbers transactions with a 32-bit counter that eventually wraps. Rows must be 'frozen' before that happens or they'd appear to come from the future and vanish. Anti-wraparound autovacuum does the freezing; autovacuum_freeze_max_age is the deadline that forces it.