select open change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

CONFIGURATION / VACUUMING

vacuum_multixact_freeze_min_age

Read PG 18 manual ↗

Specifies the cutoff age (in multixacts) that VACUUM should use to decide whether to trigger freezing of pages with an older multixact ID.

Type
integer
Context
user
Measured default
5000000
Unit
Metadata snapshot
18

Definition PG 18 manual

Specifies the cutoff age (in multixacts) that VACUUM should use to decide whether to trigger freezing of pages with an older multixact ID. The default is 5 million multixacts. Although users can set this value anywhere from zero to one billion, VACUUM will silently limit the effective value to half the value of autovacuum_multixact_freeze_max_age, so that there is not an unreasonably short time between forced autovacuums. For more information see Section 24.1.5.1.

Measured default history
Version intervalDefault
9.3 – 195000000
Analysis & operational context

Authored guidance from the GUC source snapshot; the version-specific manual above is the definition reference. View source ↗

How it works

Sets the minimum MultiXact age at which VACUUM replaces old tuple xmax MultiXact IDs. It is a user-context setting and is distinct from the XID cutoff.

Lower values make VACUUM process MXIDs earlier; higher values defer that work. PostgreSQL may still remove MultiXacts proactively, and the effective cutoff is capped at half of autovacuum_multixact_freeze_max_age.

Track mxid_age(relminmxid), mxid_age(datminmxid), and pg_multixact member storage. Interpret it with vacuum_multixact_freeze_table_age, autovacuum_multixact_freeze_max_age, and vacuum_multixact_failsafe_age.

Operational considerations

Describing the cutoff as an XID control or monitoring only relfrozenxid.

Ignoring pg_multixact member-space pressure, which can force aggressive work before the configured age.

Raising the value while long-lived shared row locks continue to generate old MXIDs.

Using autovacuum_freeze_max_age instead of the MultiXact-specific maximum when calculating the cap.

Workload guidance

OLAP: Bulk reads alone rarely justify a change, but concurrent row-locking loaders can consume MXIDs quickly. Measure mxid_age and pg_multixact growth during the real load.

OLTP: Tune from MXID consumption caused by row locks and multitransaction workloads. Preserve ample distance to autovacuum_multixact_freeze_max_age and monitor member storage as well as age.

SMALL: Keep the default unless MXID evidence says otherwise. Low transaction volume does not protect a workload that creates many shared row locks.

Version history 6
  1. PG 17 → 18changed
  2. PG 16 → 17changed
  3. PG 15 → 16changed
  4. PG 13 → 14changed
  5. PG 9.5 → 9.6changed
  6. PG 9.2 → 9.3added

Related entries

Further reading

Definition snapshot: english-manuals:1c9003a118a75cc593f0f13cbea… · English manual source