OceanBase的执行计划怎么看出来是并行执行的?

OceanBase的执行计划怎么看出来是并行执行的?

3 个赞

@论坛小助手

2 个赞

要确定 OceanBase 的执行计划是否是并行执行的,可以通过查看 EXPLAIN 命令返回的执行计划来判断。具体来说,需要关注以下几点:

  1. EXCHANGE 算子:在执行计划中,如果出现 EXCHANGE 算子(如 EXCH-IN/OUT (REMOTE)),则表明该查询是并行执行的。EXCHANGE 算子负责在不同节点之间传输数据,是并行执行的一个重要标志。
  2. 多个物理算子:如果在执行计划中看到多个物理算子(如 TABLE FULL SCAN)分布在不同的节点上,也表明查询是并行执行的。
  3. 并行执行相关的系统视图:可以通过查询系统视图 GV$OB_SQL_AUDITV$OB_SQL_AUDIT 来查看并行执行的运行状态和统计信息。这些视图中包含的字段如 qc_iddfo_idsqc_idworker_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-OUTEXCH-IN 算子的存在表明查询是在多个节点上并行执行的。

详情请参考:

  1. 阅读和管理 OceanBase 数据库 SQL 执行计划
  2. 并行查询的执行
  3. 启用和关闭并行查询

:grinning: :grinning: :smile: :smile: