是否可以保证 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,如果达到该限制,您不会得到一个并行工作者,即使优化器想要并行化。

我会把这个决定留给优化器。