PostgreSQL 9.6并行聚合

PostgreSQL 9.6并行聚合,postgresql,parallel-processing,Postgresql,Parallel Processing,9.6版的PostgreSQL增加了对并行聚合的支持 在9.6中,PostgreSQL引入了对并行执行的初始支持 对大型查询的处理。仅在驱动 表是通过顺序扫描访问的,可以并行化。搞砸 连接和嵌套循环可以并行执行 聚合(用于支持的聚合)。仍有许多工作要做,但是 这已经是一组有用的功能 上面提到的支持集合是什么 在设计聚合函数以允许使用并行机制时,是否有任何特殊考虑 现在提到平行聚合: 35.10.4。部分聚集 或者,聚合函数可以支持部分聚合。这个 部分聚合的思想是运行聚合的状态转换 独立地在输入

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

在9.6中,PostgreSQL引入了对并行执行的初始支持 对大型查询的处理。仅在驱动 表是通过顺序扫描访问的,可以并行化。搞砸 连接和嵌套循环可以并行执行 聚合(用于支持的聚合)。仍有许多工作要做,但是 这已经是一组有用的功能

  • 上面提到的支持集合是什么
  • 在设计聚合函数以允许使用并行机制时,是否有任何特殊考虑
现在提到平行聚合:

35.10.4。部分聚集

或者,聚合函数可以支持部分聚合。这个 部分聚合的思想是运行聚合的状态转换 独立地在输入数据的不同子集上运行,以及 然后将这些子集产生的状态值组合到 产生与扫描相同的状态值 一次操作中的所有输入。此模式可用于 通过使用不同的工作进程进行并行聚合 桌子的不同部分。每个工人产生一个部分状态 值,并在最后合并这些状态值以生成 最终状态值。(将来,此模式也可用于 用于合并本地和远程表上的聚合; 但这还没有实现。)

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


在规划查询时,将考虑标记为“并行安全”的任何函数/聚合。看<代码>pg_程序并行: