GaussDB GaussDB 数据库架构师修炼(十八)SQL引擎(1)-SQL执行流程

1 SQL执行流程

  • 查询解析:词法 分析、语法 分析、 语义分析
  • 查询重写:视图和规则 展开、基于规则的查询优化
  • 计划生成:路径搜索 和枚举、选出最优执行计划
  • 查询执行:基于优化器生成的物理执行计划对数据进行获取和计算

2 解析器和优化器

SQL是一种声明式语言 ,只需要指定想要达到的目的 ,即What,而不需要指定怎样达到这个目的,即How 。
解析器:处理"What"的定义 , 根据语法规则元数据 将SQL语句编译成为一个由关系算子 组成的逻辑执行 计划。
优化器:处理"How",即"What"的解法 ,通过基于关系代数的等价变换 、物理计划的枚举和基于统计信息的代价评估 来选择最优的物理执行计划。

3 执行器

1)迭代器模式(火山模型)

执行以算子迭代的方式驱动执行

可将算子抽象为init() ,get_next (), end()三种类型操作。

上层算子通过嵌套调用下层算子的get_next ()处理返回数据。

初始化和结束操作也通 过init()和end()嵌套调用。

初始化:迭代遍历整个PlanTree,对每个算子进行初始化操作。

执行:当前算子处理下层算子返回值,处理后返回给上层算子。

结束:迭代遍历整个PlanTree,清理对 应算子内的资源。

4 批注

掌握GaussDB的SQL引擎的工作及原理