SQL 引擎概述
在收集大家对进阶教程建议的过程中,有非常多用户希望能够更进一步了解相对深入一些的背景知识,以及关键技术的实现原理。因此专门在这里增加了一个 小节,为大家简单介绍 OceanBase 的 SQL 引擎。
OceanBase SQL 引擎概要介绍
当一个查询请求进入 OceanBase 数据库之后:
-
首先会进入解析模块(parser + resolver),这个模块本质上是内核去理解查询请求到底要做什么,理解需求是什么。
-
充分理解需求后,会进入优化环节,优化器(optimizer)会从众多可以达到目的的方法中,选出它认为最好的方法交给执行器。
-
执行器(executor)包含了去实操这个方法所有的细节,忠实地根据优化器给出的建议方案把查询做下来,并把最终结果反馈给客户。
综上,OceanBase SQL 引擎的整体框架如下图所示:
上图中用差旅这件事,对优化器和执行期的功能做了一个类比,大意就是优化器会枚举所有到目的地的方案,并评估不同方案的代价,选出最优的一种,然后执行器根据优化器选择的方案去执行。
大家可以看到,图中 SQL 引擎涉及到的内容很多,不过不用害怕,因为对于 OceanBase 的用户来说,大多都不需要深入了解。
需要 OceanBase 用户掌握的内容
对于 OceanBase 的使用者来说,需要了解和掌握的东西并不多,相比 SQL 引擎的全部内容,只有九牛一毛。
了解之后,遇到 SQL 问题就可以有的放矢,大大减少解决问题的时间。
优化器部分
在优化器部分需要掌握的内容有:
- 统计信息和计划缓存
- 阅读和管理执行计划
- 常见的几种 SQL 调优方式
- SQL 性能问题的通用排查思路和几种典型场景
执行器部分
在执行器部分需要掌握的内容有:
- 并行执行
- SQL 性能问题分析工具
其他
其他需要和 AP 场景相关,且需要掌握的内容有:
- 列存