版本9.6中的PostgreSQL增加了对并行聚合的支持。
使用9.6,PostgreSQL引入了对并行执行的初始支持 大型查询。只有严格的只读查询才能开车 通过顺序扫描访问表可以并行化。哈希 连接和嵌套循环可以并行执行,也可以 聚合(对于支持的聚合)。还有许多工作要做,但是 这已经是一组有用的功能。
答案 0 :(得分:1)
PostgreSQL 9.6 User-defined Aggregates documentation现在提到并行聚合:
35.10.4。部分聚合
可选地,聚合函数可以支持部分聚合。该 部分聚合的想法是运行聚合的状态转换 独立地在输入数据的不同子集上起作用,和 然后将这些子集产生的状态值组合到 产生与扫描相同的状态值 单个操作中的所有输入。此模式可用于 通过让不同的工作进程扫描并行聚合 表的不同部分。每个工人都产生一个部分状态 值,最后将这些状态值组合起来产生一个 最终的州值。 (将来这种模式也可能用于 目的,例如在本地和远程表上组合聚合; 但是还没有实现。)
要支持部分聚合,必须提供聚合定义 一个combine函数,它接受聚合状态的两个值 type(表示聚合两个子集的结果) 输入行)并生成一个新的状态类型值,表示 聚合在组合之后的状态是什么 那些行集。它未指明相对的顺序是什么 这两组中的输入行已经存在。这意味着它 通常无法为聚合定义有用的组合函数 对输入行顺序敏感。