暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在PostgreSQL中,一个查询的默认并行度(max_parallel_workers_per_gather)设置的最大值通常是:

原创 小伙 2025-06-14
199

在PostgreSQL中,一个查询的默认并行度(max_parallel_workers_per_gather)设置的最大值通常是:

A

1

B

8

C

2

D

根据硬件资源动态调整

📍 详细说明 默认值设定依据

根据 PostgreSQL 官方文档及多个权威来源(包括配置文件和测试案例),max_parallel_workers_per_gather 的 默认值为 2。

这意味着在执行包含 Gather 或 Gather Merge 节点的查询计划时,默认最多启用 2 个并行工作进程(worker)。
与其他参数的关系

实际并行度受多层参数制约:

max_worker_processes:系统允许的全局最大后台进程数(默认通常为 8)。

max_parallel_workers:系统允许的并行工作进程总数(默认通常为 8)。

因此,即使 max_parallel_workers_per_gather 设置为更高值(如 4),实际启动的 worker 数量也不会超过 max_worker_processes 和 max_parallel_workers 的剩余可用额度。
动态调整的可能性

默认值 2 是静态配置,但用户可根据硬件和负载需求手动调整:

      -- 示例:将会话级并行度提升至 4  
 SET max_parallel_workers_per_gather = 4;  
   

优化器会基于表大小(如 min_parallel_table_scan_size=8MB)、成本参数(如 parallel_setup_cost=1000)动态决策是否启用并行,但 worker 数量上限仍由 max_parallel_workers_per_gather 的设定值控制。

⚠️ 错误选项排除 A. 1:低于实际默认值,不符合官方设定。

B. 8:混淆为 max_worker_processes 或 max_parallel_workers 的默认值。

D. 动态调整:优化器仅决策“是否启用并行”,而 worker 数量上限是固定配置值(默认 2),非动态计算。

💡 最佳实践建议 OLTP 场景:保持默认值 2,避免过多 worker 争抢 CPU 和内存资源。

OLAP 场景:可适当调高(如 4~8),但需满足:

硬件资源充足(CPU 核心数 ≥ 目标并行度);

表数据量显著超过 min_parallel_table_scan_size(默认 8MB)。

参数配置示例:

max_worker_processes = 16 # 全局后台进程上限

max_parallel_workers = 8 # 并行进程上限

max_parallel_workers_per_gather = 4 # 单查询并行度上限

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论