max_parallel_maintenance_workers
控制最大并行维护工作进程数的 GUC
max_parallel_maintenance_workers
是一个用于设置单个实用程序命令可以启动的最大并行工作进程数的 配置参数。
max_parallel_maintenance_workers
在 PostgreSQL 18 中添加。
用法
max_parallel_maintenance_workers
受以下实用程序命令支持
CREATE INDEX
(在构建 B 树索引时)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 18)
设置 | 2 |
单位 | |
类别 | 资源使用/异步行为 |
简短描述 | 设置每个维护操作的最大并行进程数。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1024 |
枚举值 | |
引导值 | 2 |
重置值 | 2 |
源文件 | |
源代码行号 | |
待重启 | 否 |
max_parallel_maintenance_workers (PostgreSQL 17)
设置 | 2 |
单位 | |
类别 | 资源使用/异步行为 |
简短描述 | 设置每个维护操作的最大并行进程数。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1024 |
枚举值 | |
引导值 | 2 |
重置值 | 2 |
源文件 | |
源代码行号 | |
待重启 | 否 |
max_parallel_maintenance_workers (PostgreSQL 16)
设置 | 2 |
单位 | |
类别 | 资源使用/异步行为 |
简短描述 | 设置每个维护操作的最大并行进程数。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1024 |
枚举值 | |
引导值 | 2 |
重置值 | 2 |
源文件 | |
源代码行号 | |
待重启 | 否 |
max_parallel_maintenance_workers (PostgreSQL 15)
设置 | 2 |
单位 | |
类别 | 资源使用/异步行为 |
简短描述 | 设置每个维护操作的最大并行进程数。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1024 |
枚举值 | |
引导值 | 2 |
重置值 | 2 |
源文件 | |
源代码行号 | |
待重启 | 否 |
max_parallel_maintenance_workers (PostgreSQL 14)
设置 | 2 |
单位 | |
类别 | 资源使用/异步行为 |
简短描述 | 设置每个维护操作的最大并行进程数。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1024 |
枚举值 | |
引导值 | 2 |
重置值 | 2 |
源文件 | |
源代码行号 | |
待重启 | 否 |
max_parallel_maintenance_workers (PostgreSQL 13)
设置 | 2 |
单位 | |
类别 | 资源使用/异步行为 |
简短描述 | 设置每个维护操作的最大并行进程数。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1024 |
枚举值 | |
引导值 | 2 |
重置值 | 2 |
源文件 | |
源代码行号 | |
待重启 | 否 |
max_parallel_maintenance_workers (PostgreSQL 12)
设置 | 2 |
单位 | |
类别 | 资源使用/异步行为 |
简短描述 | 设置每个维护操作的最大并行进程数。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1024 |
枚举值 | |
引导值 | 2 |
重置值 | 2 |
源文件 | |
源代码行号 | |
待重启 | 否 |
max_parallel_maintenance_workers (PostgreSQL 11)
设置 | 2 |
单位 | |
类别 | 资源使用/异步行为 |
简短描述 | 设置每个维护操作的最大并行进程数。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认值 |
最小值 | 0 |
最大值 | 1024 |
枚举值 | |
引导值 | 2 |
重置值 | 2 |
源文件 | |
源代码行号 | |
待重启 | 否 |
更改历史记录
- PostgreSQL 11
- 添加 (提交 9da0cc35)
示例
实用程序命令调用实际使用的并行工作进程数不可直接查看,但可以通过将 client_min_messages
设置为 DEBUG1
来确定,这(对于 CREATE INDEX
)将发出类似的消息
DEBUG: building index "..." on table "..." with request for ... parallel workers
监视创建索引时使用的并行工作进程数;请注意,计划程序选择的数量小于指定的最大值
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