{"Entry":{"collection":"guc","key":"vacuum_multixact_freeze_min_age","name":"vacuum_multixact_freeze_min_age","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Vacuuming / Freezing","category_zh":"","changed_in":["18"],"changes":[{"documentation_changed":false,"fields":{},"from":"9.2","status":"added","to":"9.3"},{"documentation_changed":true,"fields":{},"from":"9.5","status":"changed","to":"9.6"},{"documentation_changed":true,"fields":{},"from":"13","status":"changed","to":"14"},{"documentation_changed":true,"fields":{},"from":"15","status":"changed","to":"16"},{"documentation_changed":true,"fields":{},"from":"16","status":"changed","to":"17"},{"documentation_changed":false,"fields":{"category":{"from":"Client Connection Defaults / Statement Behavior","to":"Vacuuming / Freezing"}},"from":"17","status":"changed","to":"18"}],"content_hash":"50ddc4156b6e9004ba28f73bda7520af5b701d0bed355a2d3dd678c0dc967a6b","context":"","default_changed_in":[],"default_history":[{"from":"9.3","to":"19","value":"5000000"}],"editorial":{"advice":{"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."},"mechanism":["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."],"pitfalls":["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."],"references":[{"title":"PostgreSQL 19 Beta 4: vacuum_multixact_freeze_min_age","url":"https://www.postgresql.org/docs/19/runtime-config-vacuum.html#GUC-VACUUM-MULTIXACT-FREEZE-MIN-AGE"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["autovacuum_multixact_freeze_max_age","vacuum_multixact_freeze_table_age","vacuum_multixact_failsafe_age","vacuum_freeze_min_age","autovacuum","log_autovacuum_min_duration"],"summary":"vacuum_multixact_freeze_min_age — Minimum age at which VACUUM should freeze a MultiXactId in a table row. Observed in PG9.3–19 Beta 4; its last measured boot default is 5000000 in PG19 Beta 4, with user context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA."},"enumvals":[],"first_version":"9.3","group":"Vacuuming","group_slug":"vacuum","imported_at":"2026-09-27T17:57:32.302354+08:00","intro_commit":{"authored_at":"2014-02-13T19:30:30-03:00","discussion":[],"hash":"fb47de2be6e44397ab40508729606697f52702ac","subject":"Separate multixact freezing parameters from xid's","url":"https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=fb47de2be6e44397ab40508729606697f52702ac"},"key":"vacuum_multixact_freeze_min_age","last_version":"20","max_val":"","min_val":"","name":"vacuum_multixact_freeze_min_age","position":458,"present_in":["9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"short_desc":"Specifies the cutoff age (in multixacts) that VACUUM should use to decide whether to trigger freezing of pages with an older multixact ID.","short_desc_zh":"","source_rev":"english-manuals:bf0cc45fc0ee4e3891e46b7e00d966232a2271c1fe992d65a57108e3ff87fe2b","unit":"","vartype":"integer"}},"Definition":{"Collection":"guc","Key":"vacuum_multixact_freeze_min_age","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"vacuum_multixact_freeze_min_age","SourceRevision":"english-manuals:bf0cc45fc0ee4e3891e46b7e00d966232a2271c1fe992d65a57108e3ff87fe2b","Facts":{"boot_val":"5000000","category":"Vacuuming / Freezing","context":"user","description":"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.","doc":{"anchor":"GUC-VACUUM-MULTIXACT-FREEZE-MIN-AGE","file":"runtime-config-vacuum.html","lang":"en","sha256":"7047f1fa9138b97f1812532f8a905fa7479451dfd64655e029a7d387b20b22e4","slug":"18"},"documented":true,"enumvals":null,"extra_desc":null,"lang":"en","max_val":"1000000000","metadata_version":"18","min_val":"0","name":"vacuum_multixact_freeze_min_age","short_desc":"Minimum age at which VACUUM should freeze a MultiXactId in a table row.","source":"pg-settings-source-snapshot","unit":null,"vartype":"integer"},"ManualEvidence":{"doc":{"anchor":"GUC-VACUUM-MULTIXACT-FREEZE-MIN-AGE","file":"runtime-config-vacuum.html","lang":"en","sha256":"7047f1fa9138b97f1812532f8a905fa7479451dfd64655e029a7d387b20b22e4","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"vacuum_multixact_freeze_min_age","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"vacuum_multixact_freeze_min_age","Summary":"","BodyHTML":"\u003cp\u003e指定\u003ccode\u003eVACUUM\u003c/code\u003e在决定是否冻结带有较旧多事务 ID 的页面时应采用的截止年龄（以多事务计）。默认值为 500 万个多事务。尽管用户可以将该值设置在 0 到 10 亿之间，\u003ccode\u003eVACUUM\u003c/code\u003e仍会悄悄将其有效值限制为不超过\u003ca href=\"/docs/18/runtime-config-vacuum.html#GUC-AUTOVACUUM-MULTIXACT-FREEZE-MAX-AGE\" rel=\"nofollow\"\u003eautovacuum_multixact_freeze_max_age\u003c/a\u003e的一半，以避免强制自动清理之间的间隔过短。详见\u003ca href=\"/docs/18/routine-vacuuming.html#VACUUM-FOR-MULTIXACT-WRAPAROUND\" rel=\"nofollow\"\u003e第 24.1.5.1 节\u003c/a\u003e。\u003c/p\u003e","SourceRevision":"2026-09-11@29c86d9","ContentHash":"a96fbbf1c6a2bded56870c103d7a52afd5746f77d3ec78a556a1c97d4f3663ad","Payload":{"carried_from":"","carry_reason":"","doc_html":"\u003cp\u003e指定\u003ccode class=\"command\"\u003eVACUUM\u003c/code\u003e在决定是否冻结带有较旧多事务 ID 的页面时应采用的截止年龄（以多事务计）。默认值为 500 万个多事务。尽管用户可以将该值设置在 0 到 10 亿之间，\u003ccode class=\"command\"\u003eVACUUM\u003c/code\u003e仍会悄悄将其有效值限制为不超过\u003ca href=\"/docs/18/runtime-config-vacuum.html#GUC-AUTOVACUUM-MULTIXACT-FREEZE-MAX-AGE\"\u003eautovacuum_multixact_freeze_max_age\u003c/a\u003e的一半，以避免强制自动清理之间的间隔过短。详见\u003ca href=\"/docs/18/routine-vacuuming.html#VACUUM-FOR-MULTIXACT-WRAPAROUND\" title=\"24.1.5.1. 多事务与回卷\"\u003e第 24.1.5.1 节\u003c/a\u003e。\u003c/p\u003e","doc_same_as":""}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
