SMP适用场景与限制

    • 支持并行的算子:计划中存在以下算子支持并行。

      • Scan:支持行存普通表和行存分区表顺序扫描 、列存普通表和列存分区表顺序扫描。
      • Join:HashJoin、NestLoop
      • Agg:HashAgg、SortAgg、PlainAgg、WindowAgg(只支持partition by,不支持order by)
      • 其他:Result、Subqueryscan、Unique、Material、Setop、Append、VectoRow、RowToVec
      • Local Gather:实现实例内部并行线程的数据汇总。
      • Local Redistribute:在实例内部各线程之间,按照分布键进行数据重分布。
      • Local Broadcast:将数据广播到实例内部的每个线程。
      • Local RoundRobin:在实例内部各线程之间实现数据轮询分发。
    • 示例说明,以TPCH Q1的并行计划为例。

      在这个计划中,实现了Scan以及HashAgg算子的并行,并新增了Local Gather数据交换算子。其中3号算子为Local Gather算子,上面标有的“dop: 1/4”表明该算子的发送端线程的并行度为4,而接受端线程的并行度为1,即下层的4号HashAggregate算子按照4并行度执行,而上层的1~2号算子按照串行执行,3号算子实现了实例内并行线程的数据汇总。

    1. MergeJoin不支持并行执行。
    2. WindowAgg order by不支持并行执行。
    3. cursor不支持并行执行。
    4. 存储过程和函数内的查询不支持并行执行。
    5. 不支持子查询subplan和initplan的并行,以及包含子查询的算子的并行。
    6. 查询语句中带有median操作的查询不支持并行执行。
    7. 带全局临时表的查询不支持并行执行。