是否可以保证 postgres 中并行聚合函数的最小工作人员数量?
Is it possible to guarantee a minimum set number of workers for a parallel aggregate function in postgres?
我有一个自定义的 Postgresql 并行聚合扩展,我希望每次使用聚合函数时至少有 N 个工作进程执行聚合。
是否可以告诉 postgresql 总是至少使用 N 个 worker 来实现这个功能?
您可以做的是在 table 上设置存储参数 parallel_workers
。然后 table 的每个并行扫描都使用那么多工作人员。但它不能按功能完成,这是有道理的,因为它取决于 table 并行性是否有用。
此外,您永远无法保证始终使用一定数量的 worker,因为 cluster-wide 并行 worker 的最大值为 max_parallel_workers
,如果达到该限制,您不会得到一个并行工作者,即使优化器想要并行化。
我会把这个决定留给优化器。
我有一个自定义的 Postgresql 并行聚合扩展,我希望每次使用聚合函数时至少有 N 个工作进程执行聚合。
是否可以告诉 postgresql 总是至少使用 N 个 worker 来实现这个功能?
您可以做的是在 table 上设置存储参数 parallel_workers
。然后 table 的每个并行扫描都使用那么多工作人员。但它不能按功能完成,这是有道理的,因为它取决于 table 并行性是否有用。
此外,您永远无法保证始终使用一定数量的 worker,因为 cluster-wide 并行 worker 的最大值为 max_parallel_workers
,如果达到该限制,您不会得到一个并行工作者,即使优化器想要并行化。
我会把这个决定留给优化器。