在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 # 单查询并行度上限




