9
Freezing Configuration
Multitransaction Parameters
vacuum_multixact_freeze_min_age = 5 000 000
vacuum_multixact_freeze_table_age = 150 000 000
autovacuum_multixact_freeze_max_age = 400 000 000
vacuum_multixact_failsafe_age = 1 600 000 000
Table Storage Parameters
autovacuum_multixact_freeze_min_age
toast.autovacuum_multixact_freeze_min_age
autovacuum_multixact_freeze_table_age
toast.autovacuum_multixact_freeze_table_age
autovacuum_multixact_freeze_max_age
toast.autovacuum_multixact_freeze_max_age
Since multitransactions are assigned separate IDs that are written to the
xmax field of tuples, the limited bitness of the counter creates the same
challenges as with regular transaction IDs. This refers to the issue of
wraparound, which was covered in the Freezing lesson of the MVCC
module.
Therefore, IDs of multitransactions require a similar freezing process, i.e.,
old multixact IDs are replaced with new ones (or with ID of a regular
transaction if the lock is currently held by only a single transaction).
Note that regular tuple freezing operates on the xmin field (if a tuple has a
non-empty xmax field, it means either the tuple is already obsolete and will
be cleaned up, or the xmax transaction was aborted and its ID is of no
interest). For multitransactions, the problem lies in the xmax field of a current
tuple that stays valid but can be repeatedly locked by different transactions
in shared mode.
Multitransaction freezing is controlled by parameters similar to those used
for regular freezing.