You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL:vacuum_freeze_min_age与autovacuum_freeze_min_age命名差异咨询

PostgreSQL vacuum_freeze_min_age 全局与表级参数命名差异解析
  • 先明确两个参数的作用边界:

    • 全局参数 vacuum_freeze_min_age:同时管控手动执行VACUUM和**自动VACUUM(autovacuum)**的freeze触发最小事务年龄——当表中事务年龄超过这个值时,执行VACUUM会顺带做freeze操作。
    • 表级参数 autovacuum_freeze_min_age:仅针对autovacuum进程对该表的操作生效,手动执行VACUUM时依然遵循全局的 vacuum_freeze_min_age 阈值。
  • 为什么和 vacuum_freeze_max_age 的命名规则不一样?

    • vacuum_freeze_max_age 是强制触发阈值:不管是手动还是自动VACUUM,只要表的事务年龄达到这个值,就必须执行freeze(否则表会被冻结无法写入)。所以表级设置的 vacuum_freeze_max_age 和全局参数同名,因为它覆盖的是全局的强制规则,对所有VACUUM场景生效。
    • 而 vacuum_freeze_min_age 是建议性触发阈值:PostgreSQL设计时不支持针对手动VACUUM设置表级的min_age阈值,仅允许自定义autovacuum的触发条件,所以给表级参数加上 autovacuum_ 前缀,明确它的作用范围仅限autovacuum。
  • 结合你的操作示例验证:
    尝试给表设置不带前缀的 vacuum_freeze_min_age 会报错,因为PostgreSQL没有提供针对手动VACUUM的表级min_age配置项;而设置带前缀的 autovacuum_freeze_min_age 成功,说明这个参数仅管控autovacuum对该表的freeze触发时机。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 18:23:16