Skip to main content

SQL 引擎概述

在收集大家对进阶教程建议的过程中,有非常多用户希望能够更进一步了解相对深入一些的背景知识,以及关键技术的实现原理。因此专门在这里增加了一个小节,为大家简单介绍 OceanBase 的 SQL 引擎。

OceanBase SQL 引擎概要介绍

当一个查询请求进入 OceanBase 数据库之后:

  • 首先会进入解析模块(parser + resolver),这个模块本质上是内核去理解查询请求到底要做什么,理解需求是什么。

  • 充分理解需求后,会进入优化环节,优化器(optimizer)会从众多可以达到目的的方法中,选出它认为最好的方法交给执行器。

  • 执行器(executor)包含了去实操这个方法所有的细节,忠实地根据优化器给出的建议方案把查询做下来,并把最终结果反馈给客户。

综上,OceanBase SQL 引擎的整体框架如下图所示:

image.png

上图中用差旅这件事,对优化器和执行期的功能做了一个类比,大意就是优化器会枚举所有到目的地的方案,并评估不同方案的代价,选出最优的一种,然后执行器根据优化器选择的方案去执行。

大家可以看到,图中 SQL 引擎涉及到的内容很多,不过不用害怕,因为对于 OceanBase 的用户来说,大多都不需要深入了解。

需要 OceanBase 用户掌握的内容

对于 OceanBase 的使用者来说,需要了解和掌握的东西并不多,相比 SQL 引擎的全部内容,只有九牛一毛。

了解之后,遇到 SQL 问题就可以有的放矢,大大减少解决问题的时间。

优化器部分

在优化器部分需要掌握的内容有:

  • 统计信息和计划缓存
  • 阅读和管理执行计划
  • 常见的几种 SQL 调优方式
  • SQL 性能问题的通用排查思路和几种典型场景

执行器部分

在执行器部分需要掌握的内容有:

  • 并行执行
  • SQL 性能问题分析工具

其他

其他需要和 AP 场景相关,且需要掌握的内容有:

  • 列存

以下内容献给对技术充满热情的 OceanBase 用户

和用户交流的过程中,有不少用户都表示希望能够对 SQL 引擎的关键技术实现原理有更加深入的理解。

这里仅为大家推荐一些个人认为很有学习价值的内容,但不再逐个细批。

如果你在掌握上面的内容之后,仍有余力,能继续把下面这些东西学会,那你就是 SQL 引擎专家了!

优化器部分

优化器部分,推荐大家阅读《SQL 查询改写专题博客》

内容稍有门槛,适合希望深入了解 SQL 改写同学阅读。推荐大家在掌握如何 “阅读和管理执行计划” 之后进行阅读。

执行器部分

  • 向量化执行技术

    • 推荐大家阅读一篇博客《从行到向量 —— 数据库执行引擎的进化之路》

    • 纯科普向文章,文中代码也都是伪代码,推荐所有 OceanBase 用户阅读。

    • 这里多提一句 “向量化执行的最佳实践”,非常简单:就是打开向量化开关,然后不要随意手动调整默认的 rowset 值(rowset 值的设置会有简单的自适应策略)即可。

  • 并行执行技术

    • 推荐大家阅读 《OceanBase 并行执行学习笔记》系列

    • 内容稍有门槛,但门槛不高,适合有 AP 需求的用户阅读学习 。推荐大家在掌握如何 “阅读和管理执行计划” 之后进行阅读。

  • DAS(data access service)技术

    • 推荐大家阅读 这篇博客中描述的第二个问题,在解释问题的过程中,会为大家介绍 DAS 执行的概念。

    • 简而言之,DAS 技术就是:让 OceanBase 可以不需要通过 remote 或者 exchange 算子一样在网络中把复杂的 SQL 或者子计划在节点间传来传去,而是支持在合适的场景下,直接跟存储层交互,通过 RPC 拉取到远程的存储层数据。目的是让远程计划和分布式计划,被简化为本地计划。

    • 推荐大家在掌握如何 “阅读和管理执行计划” 之后进行阅读。

  • 分布式下压技术

    • 推荐大家阅读一篇博客《OceanBase 分布式下压技术》

    • 简而言之,分布式下压技术就是:在分布式执行的过程中,为了更好地利用并行的能力,降低 CPU 和网络的开销,优化器生成计划时往往会将部分算子下压到更下层的各个计算节点上。目的是为了充分利用集群的计算资源,提升执行效率。

    • 推荐大家在掌握如何 “阅读和管理执行计划” 之后进行阅读。

  • 执行引擎的自适应技术

    • 推荐大家阅读一篇博客《OceanBase 执行引擎的自适应技术》

    • 简而言之,自适应技术就是:执行引擎在执行阶段,根据真实的数据特征(例如在数据分布不均时,),动态调整执行策略,从而达到提升执行性能的目的。

    • 推荐大家在掌握如何 “阅读和管理执行计划” 之后进行阅读。

其他

Loading...