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引擎的工作及原理