执行计划在 OceanBase 数据库中被实现为一棵由物理操作符组成的树,目前 OceanBase 数据库支持 zigzag 形状的计划树。

    物理操作符是执行计划的基本单元,多个物理操作符按照“二叉树”的形式组成一个完整的执计划。

    常见的物理操作符如下表所示:

    执行计划的 DML 语句

    数据操纵语言(Data Manipulation Language, DML)是 SQL 语言中,负责对数据库对象运行数据访问工作的指令集。它的三种核心指令:INSERT(插入)、UPDATE(更新)、DELETE(删除)。除此之外,OceanBase 数据库还支持 REPLACE 和 INSERT INTO…ON DUPLICATED KEY UPDATE 两种 DML 语句,DML 的主要功能是访问数据,因此其语法都是以读取与写入数据库为主,除了 INSERT 以外,其他指令都可能需搭配 WHERE 指令来过滤数据范围,或是不加 WHERE 指令来访问全部的数据。

    在 OceanBase 数据库中,所有的 DML 语句都会生成对应的执行计划来进行数据的读写操作,每一种 DML 语句都会生成一种对应的 DML 算子。DML 算子负责读取数据,并通过存储层提供的数据写入接口将 DML 语句涉及到的数据写入存储引擎中。对于 INSERT/REPLACE 语句而言,由于其不用读取表中的已有数据,因此,INSERT 语句的执行计划相对简单,其执行计划为简单的 EXPR VALUES+INSERT OP 算子构成。而对于 UPDATE 或者 DELETE 语句而言,优化器会通过代价模型对 WHERE 条件进行访问路径的选择,或者 ORDER BY 数据顺序的选择,详细选择方式请参见。

    INSERT 执行计划示例

    UPDATE 执行计划示例

    DELETE 执行计划示例