我看到很多帖子和论文都设置了以下值:
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/