{"Entry":{"collection":"guc","key":"vacuum_freeze_min_age","name":"vacuum_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":"8.1","status":"added","to":"8.2"},{"documentation_changed":true,"fields":{},"from":"8.2","status":"changed","to":"8.3"},{"documentation_changed":true,"fields":{},"from":"8.3","status":"changed","to":"8.4"},{"documentation_changed":true,"fields":{},"from":"9.1","status":"changed","to":"9.2"},{"documentation_changed":true,"fields":{},"from":"9.3","status":"changed","to":"9.4"},{"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":"aa7f0c874bb2c6629588b172bc8adac4e5f54cbc92ce6c1070082ce3ceef0d1c","context":"","default_changed_in":[],"default_history":[{"from":"9.0","to":"19","value":"50000000"}],"editorial":{"advice":{"olap":"For append-mostly or static partitions, a lower value during planned VACUUM can freeze XIDs earlier and reduce later aggressive work; verify the extra WAL and scan cost.","oltp":"Keep enough distance below autovacuum_freeze_max_age for routine vacuums to advance relfrozenxid. Tune from peak XID consumption and measured vacuum completion, not days on a calendar.","small":"Keep the upstream default unless XID-age evidence justifies a change. Small databases still share the cluster transaction counter and need every database monitored."},"mechanism":["Sets the minimum XID age at which VACUUM freezes tuple xmin values. It is a user-context setting, so a session can override it for manual VACUUM.","VACUUM computes an XID freeze cutoff from this age. Lower values freeze XIDs earlier and can repeat work on rows soon updated; higher values defer work. The effective value is capped at half of autovacuum_freeze_max_age.","Track age(relfrozenxid) for tables and age(datfrozenxid) for every database. Interpret this lower cutoff with vacuum_freeze_table_age, autovacuum_freeze_max_age, and vacuum_failsafe_age; the separate vacuum_multixact_freeze_min_age controls MXIDs."],"pitfalls":["Describing the cutoff as an MXID control; MultiXacts use vacuum_multixact_freeze_min_age.","Converting XID age to time without the measured transaction rate.","Raising the value so far that routine vacuum loses useful headroom before anti-wraparound work.","Ignoring per-table autovacuum_freeze_min_age overrides."],"references":[{"title":"PostgreSQL 19 Beta 4: vacuum_freeze_min_age","url":"https://www.postgresql.org/docs/19/runtime-config-vacuum.html#GUC-VACUUM-FREEZE-MIN-AGE"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["autovacuum_freeze_max_age","vacuum_freeze_table_age","vacuum_failsafe_age","vacuum_multixact_freeze_min_age","autovacuum","log_autovacuum_min_duration"],"summary":"vacuum_freeze_min_age — Minimum age at which VACUUM should freeze a table row. Observed in PG9.0–19 Beta 4; its last measured boot default is 50000000 in PG19 Beta 4, with user context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA."},"enumvals":[],"first_version":"8.2","group":"Vacuuming","group_slug":"vacuum","imported_at":"2026-09-27T17:57:32.288961+08:00","intro_commit":{},"key":"vacuum_freeze_min_age","last_version":"20","max_val":"","min_val":"","name":"vacuum_freeze_min_age","position":453,"present_in":["8.2","8.3","8.4","9.0","9.1","9.2","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 transactions) that VACUUM should use to decide whether to trigger freezing of pages that have an older XID.","short_desc_zh":"","source_rev":"english-manuals:5b2ce882558d9c8459675024b440e332a00962b67d129d68bc7a0e690411938a","unit":"","vartype":"integer"}},"Definition":{"Collection":"guc","Key":"vacuum_freeze_min_age","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"vacuum_freeze_min_age","SourceRevision":"english-manuals:5b2ce882558d9c8459675024b440e332a00962b67d129d68bc7a0e690411938a","Facts":{"boot_val":"50000000","category":"Vacuuming / Freezing","context":"user","description":"Specifies the cutoff age (in transactions) that VACUUM should use to decide whether to trigger freezing of pages that have an older XID. The default is 50 million transactions. 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_freeze_max_age, so that there is not an unreasonably short time between forced autovacuums. For more information see Section 24.1.5.","doc":{"anchor":"GUC-VACUUM-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_freeze_min_age","short_desc":"Minimum age at which VACUUM should freeze a table row.","source":"pg-settings-source-snapshot","unit":null,"vartype":"integer"},"ManualEvidence":{"doc":{"anchor":"GUC-VACUUM-FREEZE-MIN-AGE","file":"runtime-config-vacuum.html","lang":"en","sha256":"7047f1fa9138b97f1812532f8a905fa7479451dfd64655e029a7d387b20b22e4","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"vacuum_freeze_min_age","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"vacuum_freeze_min_age","Summary":"","BodyHTML":"\u003cp\u003e指定\u003ccode\u003eVACUUM\u003c/code\u003e在决定是否冻结带有较旧 XID 的页面时应采用的截止年龄（以事务数计）。默认值为 5000 万个事务。尽管用户可以将该值设置在 0 到 10 亿之间，\u003ccode\u003eVACUUM\u003c/code\u003e仍会悄悄将其有效值限制为不超过\u003ca href=\"/docs/18/runtime-config-vacuum.html#GUC-AUTOVACUUM-FREEZE-MAX-AGE\" rel=\"nofollow\"\u003eautovacuum_freeze_max_age\u003c/a\u003e的一半，以避免强制自动清理之间的间隔过短。详见\u003ca href=\"/docs/18/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND\" rel=\"nofollow\"\u003e第 24.1.5 节\u003c/a\u003e。\u003c/p\u003e","SourceRevision":"2026-09-11@29c86d9","ContentHash":"98d5ac24acd3d02aa990cc9ce8953f159e3d6235425b0e1b211e3c7f497d8c6a","Payload":{"carried_from":"","carry_reason":"","doc_html":"\u003cp\u003e指定\u003ccode class=\"command\"\u003eVACUUM\u003c/code\u003e在决定是否冻结带有较旧 XID 的页面时应采用的截止年龄（以事务数计）。默认值为 5000 万个事务。尽管用户可以将该值设置在 0 到 10 亿之间，\u003ccode class=\"command\"\u003eVACUUM\u003c/code\u003e仍会悄悄将其有效值限制为不超过\u003ca href=\"/docs/18/runtime-config-vacuum.html#GUC-AUTOVACUUM-FREEZE-MAX-AGE\"\u003eautovacuum_freeze_max_age\u003c/a\u003e的一半，以避免强制自动清理之间的间隔过短。详见\u003ca href=\"/docs/18/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND\" title=\"24.1.5. 防止事务 ID 回卷失败\"\u003e第 24.1.5 节\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","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
