autovacuum_vacuum_max_threshold
一个 GUC 参数,用于指定触发自动 vacuum 操作的最大更新行数。
autovacuum_vacuum_max_threshold 是一个 配置参数,用于指定在表中更新或删除的元组(tuple)数量达到多少后,将自动启动 vacuum 操作。
autovacuum_vacuum_max_threshold 在 PostgreSQL 18 中被添加。
默认
autovacuum_vacuum_max_threshold 的默认值为:100,000,000。
用法
默认情况下,PostgreSQL 使用 autovacuum_vacuum_threshold 和 autovacuum_vacuum_scale_factor 的组合来计算何时对表执行 vacuum。这通常意味着较小的表会更频繁地被 vacuum,这通常是期望的。然而,对于非常大的表,更新的行数虽然绝对数量较大,但占表大小的比例仍然很低,因此不太可能被 vacuum。
autovacuum_vacuum_max_threshold 通过允许指定一个绝对的更新行数来触发 vacuum 操作,从而解决了这个问题。
可以通过将 autovacuum_vacuum_max_threshold 设置为 -1 来禁用它。
autovacuum_vacuum_max_threshold 也可以作为 存储参数 使用,因此可以为单个表设置。
按 PostgreSQL 版本详细信息
autovacuum_vacuum_max_threshold (PostgreSQL 19)
| 设置 | 100000000 |
| 单位 | |
| 类别 | 清理 / 自动清理 |
| 简短描述 | 在 vacuum 之前允许的最大更新或删除的元组数量。 |
| 扩展描述 | -1 表示禁用最大阈值。 |
| 上下文 | sighup |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | -1 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 100000000 |
| 重置值 | 100000000 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
autovacuum_vacuum_max_threshold (PostgreSQL 18)
| 设置 | 100000000 |
| 单位 | |
| 类别 | 清理 / 自动清理 |
| 简短描述 | 在 vacuum 之前允许的最大更新或删除的元组数量。 |
| 扩展描述 | -1 表示禁用最大阈值。 |
| 上下文 | sighup |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | -1 |
| 最大值 | 2147483647 |
| 枚举值 | |
| 启动值 | 100000000 |
| 重置值 | 100000000 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
变更历史
- PostgreSQL 18
- 添加于 (提交 306dc520)
参考资料
- PostgreSQL 文档: autovacuum_vacuum_max_threshold
有用链接
- PostgreSQL 18:引入 autovacuum_vacuum_max_threshold - 2025 年 2 月 Daniel Westermann / dbi services 的博客文章
