OceanBase的执行计划怎么看出来是并行执行的?
3 个赞
要确定 OceanBase 的执行计划是否是并行执行的,可以通过查看 EXPLAIN 命令返回的执行计划来判断。具体来说,需要关注以下几点:
-
EXCHANGE 算子:在执行计划中,如果出现
EXCHANGE算子(如EXCH-IN/OUT (REMOTE)),则表明该查询是并行执行的。EXCHANGE算子负责在不同节点之间传输数据,是并行执行的一个重要标志。 -
多个物理算子:如果在执行计划中看到多个物理算子(如
TABLE FULL SCAN)分布在不同的节点上,也表明查询是并行执行的。 -
并行执行相关的系统视图:可以通过查询系统视图
GV$OB_SQL_AUDIT或V$OB_SQL_AUDIT来查看并行执行的运行状态和统计信息。这些视图中包含的字段如qc_id、dfo_id、sqc_id和worker_id可以帮助确认并行执行的细节。
例如,一个典型的并行执行计划可能如下所示:
EXPLAIN select * from t1, t2 where t1.c1 = t2.c1 and t1.c1 > 10;
+------------------------------------------------------------------------------------+
| Query Plan |
+------------------------------------------------------------------------------------+
| ================================================= |
| |ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)| |
| ------------------------------------------------- |
| |0 |HASH JOIN | |1 |9 | |
| |1 |├─TABLE FULL SCAN|t1 |1 |4 | |
| |2 |└─TABLE FULL SCAN|t2 |1 |4 | |
| |3 |EXCH-OUT | |1 |1 | |
| |4 |EXCH-IN | |1 |1 | |
| ================================================= |
| Outputs & filters: 略 |
在这个例子中,EXCH-OUT 和 EXCH-IN 算子的存在表明查询是在多个节点上并行执行的。
详情请参考:
![]()