CONFIGURATION PARAMETER资源消耗 / 工作进程
parallel_leader_participation
控制 Gather 或 Gather Merge 的 leader 是否也执行子计划。
Controls whether Gather and Gather Merge also run subplans.
布尔 会话 引入 11 现存至 20 devel 0 次默认值变更
- 类型
- 布尔bool
- 上下文
- 会话任何用户都可在会话内用 SET 修改
- 默认值
on- 分类
- 资源消耗 / 工作进程
- 引入版本
- 11
- 状态
- 现存
版本轨迹
相对 PostgreSQL 17 仅简述或分类有更新。
默认值变迁
默认值自 PostgreSQL 11 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。
手册说明
本版译文与 PostgreSQL 14 完全一致,下面就是同一段文字。
允许 leader 进程在Gather和Gather Merge节点下参与执行查询计划,而不是仅仅等待 worker 进程。 默认值是on。 将其设置为off可以降低 worker 因 leader 读取元组速度不够快而被阻塞的可能性, 但在生成第一条元组之前,leader 进程将需要等待 worker 进程启动。 leader 对性能的帮助或拖累程度取决于计划类型、worker 数量以及查询持续时间。
机制详解
parallel_leader_participation 控制 Gather 或 Gather Merge 上方的进程在协调 worker 时是否也执行并行子计划;关闭时 leader 更专注于读取 worker 输出。
当结果生成昂贵时,leader 参与可增加有效 CPU;但 leader 忙于执行子计划时,可能更慢地消费大量 worker 结果流。
它是符合条件并行计划的规划/执行策略,不是额外 worker 名额。效果取决于元组量、Gather 类型、worker 可用性与瓶颈位置。其 user 上下文允许按会话或事务局部修改,之后执行或重新规划的工作会读取新值。
调优建议
按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。
-
OLTP在线事务处理
除非代表性 Gather 计划表明 leader 忙于执行子计划,无法及时消费 worker 元组,否则保留默认 on。只在会话范围测试 off,并比较首行延迟、总延迟与 worker 阻塞。
-
OLAP分析与批处理
对 CPU 密集子计划,leader 参与通常能增加有效执行能力;对超大结果流,关闭后可让 leader 更早专注于排空 worker。应在相同计划与并发度下比较两个布尔状态。
-
小规格低配实例与开发机
该布尔值不会增加或减少 worker 名额。除非实测存在结果消费瓶颈,否则保持 on;worker 数应由 max_parallel_workers_per_gather 与共享池另行规划。
常见问题
- 把该布尔值误当成并行度或 worker 数量设置。
- 使用“更大取值”描述只有 on/off 两种状态的参数。
- 关闭参与却没有测量等待 worker 产出首批元组所增加的时间。
- 开启参与却没有检查 leader 是否因此过慢地消费大型 worker 结果流。
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。
-
PostgreSQL 20 ← 19 沿用 19
事实沿用 19
-
PostgreSQL 18 ← 17 仅描述更新
分类
Resource Usage / Asynchronous BehaviorResource Usage / Worker Processes -
PostgreSQL 14 ← 13 仅描述更新
补充说明
Should gather nodes also run subplans, or just gather tuples?Should gather nodes also run subplans or just gather tuples? -
PostgreSQL 11 ← 10 新增此参数
PostgreSQL 11 起可用
逐版本快照
每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。
参考资料
同类参数
| 参数 | 类型 | 上下文 | 默认值 | 版本变动 | 最近变更 |
|---|---|---|---|---|---|
| 工作进程 5 | |||||
max_parallel_maintenance_workers |
整数 | 会话 | 2 |
— | |
| 设置单次维护操作最多使用的并行工作进程数。 | 现存 | ||||
max_parallel_workers |
整数 | 会话 | 8 |
— | |
| 设置集群内可同时活动的并行工作进程总数。 | 现存 | ||||
max_parallel_workers_per_gather |
整数 | 会话 | 2 |
101 次 | |
| 设置单个 Gather 节点最多请求的并行工作进程数。 | 现存 | ||||
max_worker_processes |
整数 | 重启生效 | 8 |
9.61 次 | |
| 设置并发后台工作进程的总上限。 | 现存 | ||||
parallel_leader_participation |
布尔 | 会话 | on |
— | |
| 控制 Gather 或 Gather Merge 的 leader 是否也执行子计划。 | 现存 | ||||