max_parallel_maintenance_workers
一个控制最大并行维护工作者的 GUC
max_parallel_maintenance_workers 是一个用于设置单个实用程序命令可以启动的最大并行工作者数量的 配置参数。
max_parallel_maintenance_workers 在 PostgreSQL 18 中添加。
用法
max_parallel_maintenance_workers 支持以下实用程序命令:
CREATE INDEX(在构建 B-tree 索引时)VACUUM(当不带FULL选项执行时)
将 max_parallel_maintenance_workers 设置为 0 会禁用这些命令使用并行工作者。
请注意,max_parallel_maintenance_workers 是一个建议的最大值,规划器可能会选择使用更少(甚至不使用)并行工作者。此外,所有活动的并行进程的总数由 max_parallel_workers 决定,这意味着 max_parallel_maintenance_workers 中指定的数量在运行时可能实际上不可用。
默认
max_parallel_maintenance_workers 的默认值为:2。
按 PostgreSQL 版本详细信息
max_parallel_maintenance_workers (PostgreSQL 19)
| 设置 | 2 |
| 单位 | |
| 类别 | 资源使用 / 工作进程 |
| 简短描述 | 设置每个维护操作的最大并行进程数。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 1024 |
| 枚举值 | |
| 启动值 | 2 |
| 重置值 | 2 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
max_parallel_maintenance_workers (PostgreSQL 18)
| 设置 | 2 |
| 单位 | |
| 类别 | 资源使用 / 工作进程 |
| 简短描述 | 设置每个维护操作的最大并行进程数。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 1024 |
| 枚举值 | |
| 启动值 | 2 |
| 重置值 | 2 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
max_parallel_maintenance_workers (PostgreSQL 17)
| 设置 | 2 |
| 单位 | |
| 类别 | 资源使用 / 异步行为 |
| 简短描述 | 设置每个维护操作的最大并行进程数。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 1024 |
| 枚举值 | |
| 启动值 | 2 |
| 重置值 | 2 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
max_parallel_maintenance_workers (PostgreSQL 16)
| 设置 | 2 |
| 单位 | |
| 类别 | 资源使用 / 异步行为 |
| 简短描述 | 设置每个维护操作的最大并行进程数。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 1024 |
| 枚举值 | |
| 启动值 | 2 |
| 重置值 | 2 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
max_parallel_maintenance_workers (PostgreSQL 15)
| 设置 | 2 |
| 单位 | |
| 类别 | 资源使用 / 异步行为 |
| 简短描述 | 设置每个维护操作的最大并行进程数。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 1024 |
| 枚举值 | |
| 启动值 | 2 |
| 重置值 | 2 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
max_parallel_maintenance_workers (PostgreSQL 14)
| 设置 | 2 |
| 单位 | |
| 类别 | 资源使用 / 异步行为 |
| 简短描述 | 设置每个维护操作的最大并行进程数。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 1024 |
| 枚举值 | |
| 启动值 | 2 |
| 重置值 | 2 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
max_parallel_maintenance_workers (PostgreSQL 13)
| 设置 | 2 |
| 单位 | |
| 类别 | 资源使用 / 异步行为 |
| 简短描述 | 设置每个维护操作的最大并行进程数。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 1024 |
| 枚举值 | |
| 启动值 | 2 |
| 重置值 | 2 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
max_parallel_maintenance_workers (PostgreSQL 12)
| 设置 | 2 |
| 单位 | |
| 类别 | 资源使用 / 异步行为 |
| 简短描述 | 设置每个维护操作的最大并行进程数。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 1024 |
| 枚举值 | |
| 启动值 | 2 |
| 重置值 | 2 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
max_parallel_maintenance_workers (PostgreSQL 11)
| 设置 | 2 |
| 单位 | |
| 类别 | 资源使用 / 异步行为 |
| 简短描述 | 设置每个维护操作的最大并行进程数。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | 整数 |
| 来源 | 默认 |
| 最小值 | 0 |
| 最大值 | 1024 |
| 枚举值 | |
| 启动值 | 2 |
| 重置值 | 2 |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
变更历史
- PostgreSQL 11
- 添加于(提交 9da0cc35)
示例
实用程序命令调用实际使用的并行工作者数量无法直接查看,但可以通过将 client_min_messages 设置为 DEBUG1 来确定,这(对于 CREATE INDEX)会发出类似以下的日志消息:
DEBUG: building index "..." on table "..." with request for ... parallel workers
正在监控创建索引时使用的并行工作者数量;请注意规划器选择的数量小于指定的 maximum
postgres=# SHOW max_parallel_maintenance_workers; max_parallel_maintenance_workers ---------------------------------- 2 (1 row) postgres=# CREATE INDEX foo_val_id_ix ON foo(id); DEBUG: building index "foo_val_id_ix" on table "foo" with request for 1 parallel workers
将 max_parallel_maintenance_workers 设置为 0 会禁用并行工作者的使用,例如这里用于 CREATE INDEX。
postgres=# SET client_min_messages TO debug1; SET postgres=# BEGIN; BEGIN postgres=*# SET LOCAL max_parallel_maintenance_workers = 0; SET postgres=*# CREATE INDEX foo_val_id_ix ON foo(id); DEBUG: building index "foo_val_id_ix" on table "foo" serially
参考资料
- PostgreSQL 文档: max_parallel_maintenance_workers
