为什么 max_parallel_workers_per_gather != max_parallel_workers

Boo*_*oom 3 postgresql parallel-processing

我看到很多帖子和论文都设置了以下值:

max_parallel_workers - 将数字设置为核心数。

max_parallel_workers_per_gather - 默认设置为 2 或设置为 max_parallel_workers / 2

使用并行查询时,收益和速度改进基于 max_parallel_workers_per_gather

  • 为什么我找不到推荐设置的帖子max_parallel_workers_per_gather = max_parallel_workers
  • 如果设置max_parallel_workers_per_gather = max_parallel_workers什么陷阱可以?

a_h*_*ame 6

max_parallel_workers定义一个工人池。运行的每个查询都可以将工作人员从该池中取出,最多可达max_parallel_workers_per_gather

现在,如果您使两个值相同,则意味着查询可能会使用所有可用的工作线程,而同时运行的其他查询无法使用并行查询,即使它确实从中受益。

如果您一次从不运行多个语句,那么您可以将它们设置为相同的值。但是,如果您有一个(繁忙的)系统,在该系统中您希望有许多并发查询并希望其中多个查询从使用多个 worker 中受益,那么最好保持max_parallel_workers_per_gather低于最大值。