SMP适用场景与限制

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

      • Scan:支持行存普通表和行存分区表顺序扫描、列存普通表和列存分区表顺序扫描。
      • Join:HashJoin、NestLoop
      • Agg:HashAgg、SortAgg、PlainAgg、WindowAgg(只支持partition by,不支持order by)。
      • Stream:Local Redistribute、Local Broadcast
      • 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. 索引扫描不支持并行执行。
    2. MergeJoin不支持并行执行。
    3. cursor不支持并行执行。
    4. 存储过程和函数内的查询不支持并行执行。
    5. 不支持子查询subplan和initplan的并行,以及包含子查询的算子的并行。
    6. 查询语句中带有median操作的查询不支持并行执行。
    7. 带全局临时表的查询不支持并行执行。
    8. 物化视图的更新不支持并行执行。
    9. 会触发trigger的查询不支持并行执行,特别的,对包含外键的表执行INSERT/UPDATE/DELETE操作会触发trigger。
    10. ustore引擎不支持并行执行。