PostgreSQL

Transaction ID wraparound prevents new transactions

critical
availabilityUpdated Feb 26, 2026
Technologies:
How to detect:

When database reaches fewer than 3 million transactions before wraparound (2 billion transaction limit), PostgreSQL refuses to assign new XIDs to prevent catastrophic data loss. System emits warnings at 40 million transactions from wraparound.

Recommended action:

Resolve old prepared transactions via pg_prepared_xacts. End long-running transactions found in pg_stat_activity with large age(backend_xid) or age(backend_xmin). Drop old replication slots from pg_stat_replication with large age(xmin) or age(catalog_xmin). Execute database-wide VACUUM (not VACUUM FULL). Do not stop postmaster or enter single-user mode.