Glossary — in plain language

Transaction ID wraparound

Also called: XID wraparound, freeze


In plain English

Every change gets a transaction ID, and that counter is only about 4 billion wide before it loops back to the start. PostgreSQL must “freeze” old rows before the counter catches up to them, or it would lose track of which data is visible. If freezing falls too far behind, the server forces protective vacuums and can eventually refuse writes.

Why it matters

This is a classic emergency: if autovacuum is disabled or starved, you get wraparound warnings and finally a read-only stop. Keeping autovacuum healthy prevents it entirely.

Was this helpful?

← Browse the full glossary