postgresql - 为什么 max_parallel_workers_per_gather != max_parallel_workers

标签 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 可以是什么陷阱?

最佳答案

max_parallel_workers 定义了一个 worker 池。运行的每个查询都可以从该池中取出 worker ,最多 max_parallel_workers_per_gather

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

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

关于postgresql - 为什么 max_parallel_workers_per_gather != max_parallel_workers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63515905/

相关文章:

ruby-on-rails - 无法使用山狮连接到 postgres 服务器

c++ - 如何使用 TBB 并行化 std::partition

python - 如何并行化 scipy 稀疏矩阵乘法

java - 如果并发运行的进程中不存在文件,如何在不使用锁定的情况下安全地创建文件?

c++ - 使用 openMP 的并行 qsort

mysql - SQL:按多个限制分组

PostgreSQL 数据库大小(表空间大小)比计算的关系总和大得多

postgresql - PQescapeLiteral 未定义?

ruby-on-rails - 用 gemfile 重新编译 database.yml 文件? rails 上的 ruby

algorithm - 数独与 MPI 并行化