PostgreSQL 9.6并行聚合

时间:2016-05-16 11:38:38

标签: postgresql parallel-processing

版本9.6中的PostgreSQL增加了对并行聚合的支持。

  

使用9.6,PostgreSQL引入了对并行执行的初始支持   大型查询。只有严格的只读查询才能开车   通过顺序扫描访问表可以并行化。哈希   连接和嵌套循环可以并行执行,也可以   聚合(对于支持的聚合)。还有许多工作要做,但是   这已经是一组有用的功能。

  • 上面提到的支持的聚合是什么?
  • 在设计聚合函数以允许使用并行机器时是否有任何特殊注意事项?

1 个答案:

答案 0 :(得分:1)

PostgreSQL 9.6 User-defined Aggregates documentation现在提到并行聚合:

  

35.10.4。部分聚合

     

可选地,聚合函数可以支持部分聚合。该   部分聚合的想法是运行聚合的状态转换   独立地在输入数据的不同子集上起作用,和   然后将这些子集产生的状态值组合到   产生与扫描相同的状态值   单个操作中的所有输入。此模式可用于   通过让不同的工作进程扫描并行聚合   表的不同部分。每个工人都产生一个部分状态   值,最后将这些状态值组合起来产生一个   最终的州值。 (将来这种模式也可能用于   目的,例如在本地和远程表上组合聚合;   但是还没有实现。)

     

要支持部分聚合,必须提供聚合定义   一个combine函数,它接受聚合状态的两个值   type(表示聚合两个子集的结果)   输入行)并生成一个新的状态类型值,表示   聚合在组合之后的状态是什么   那些行集。它未指明相对的顺序是什么   这两组中的输入行已经存在。这意味着它   通常无法为聚合定义有用的组合函数   对输入行顺序敏感。