在上一期的「带你走进 SQL 引擎」课程中,置信你曾经学习到了 SQL 引擎的基础知识,对 SQL 在各模块间的流动也有了整体的认知。在 SQL 引擎蕴含的模块中,SQL 执行引擎作为其最终落地的“手脚”,负责执行优化器给予的执行打算,通过存储引擎读取数据并进行解决后,将后果返回给客户端。因而,执行引擎可能间接影响 SQL 的执行性能。
9 月 15 日 19:30 内核实战教程第五期 将带你理解 SQL 执行引擎的根本理论知识及 OceanBase 的执行引擎实现,你能够深刻理解一款企业级分布式数据库如何实现执行引擎的高性能及如何做到毫秒级地增删改查。通过本期 OceanBase 执行引擎实现过程 的学习,对于想加入 OceanBase 数据库大赛及想从事 SQL 层研发的同学都会有很大的帮忙。
本期能帮你解决什么问题?
1、OceanBase 作为企业级原生分布式数据库,并行执行能力是如何实现的。
2、OceanBase 是如何实现向量化执行引擎的。
3、MiniOB 实战手把手系列之 MiniOB Date 类型实现解析。
直播内容抢“鲜”知
在上一期,你曾经理解了 SQL 引擎的各个知识点,咱们晓得查问优化器将 SQL 语句解析并从执行打算中抉择最低耗费的执行打算后,具体的执行就会交由执行引擎,那么 SQL 执行引擎如何设计与实现呢?本期内容通过介绍 OceanBase 的 SQL 执行引擎的实现,为你具体解说。
OceanBase 的 SQL 执行引擎通过多年演进,从传统的火山模型,由单行迭代执行演进为向量化执行,极大地晋升了单核执行能力。同时,因为其具备 SQL 并行执行的能力,能够充分利用系统资源并行处理用户申请,从而升高 RT。
从图 1 可见,OceanBase 第二代执行引擎连续了传统的火山模型,数据按行迭代,但对旧的执行引擎进行了重写。新的实现引入了强类型计算,执行内存预调配,应用表达式列表形容行信息,将动态的 meta 信息与数据拆散,从新实现了表达式及算子计算框架,执行性能相比第一代执行引擎大幅晋升。
图 1 OceanBase SQL 执行引擎演进历程
而从第二代的数据按行迭代到第三代向量化解决逻辑,产生了极大的优化。因为 OceanBase 的用户场景除 OLTP 类的简略查问外,还有报表分析、业务决策等 OLAP 查问。而 OLAP 查问的数据处理量大、耗时高,传统的按行迭代模型每行都须要迭代一次,导致虚函数调用开销比拟大,同时 cache 敌对性也较差。为解决该问题, OceanBase 实现了向量化引擎。成果也很显著,在 TPC-H 30T 场景,向量化引擎的性能是非向量化的近 3 倍,对于 Q1 这种聚合分析且计算密集的 SQL 查问,性能晋升约 10 倍。本次教程还会为你具体介绍更多 OceanBase 向量化实现细节。
图 2 OceanBase 执行引擎之单行执行
图 3 OceanBase 执行引擎之向量化执行
对于 OLAP 场景的 SQL 申请,须要剖析大量用户数据,并且用户往往冀望可能尽快给出后果,单核串行执行能力是无限的。为了可能尽快跑出后果,充分利用系统资源并行执行是要害。OceanBase 很早就实现了并行执行能力,能够反对大规模高并发解决,充分利用集群机器资源,在 TPC-H 30T 规范测试场景中,咱们用 64 台机器的 5120 个 CPU 超线程,同时去服务每一个用户申请,把原本须要几十分钟能力实现的申请在几秒内解决完。
图 4 OceanBase 执行引擎之并行执行框架
OceanBase 是 Share Noting 的分布式数据库架构,并行执行能够满足 AP 场景(数据量大,解决工夫长)下对单个申请并发解决需要,但对于 TP 场景(耗时短,用户 QPS 高),一个 SQL 申请耗时可能只有几个 ms 甚至几百 us, 个别都是串行执行(并行执行调度等开销绝对 TP 耗时较大)。为了可能在分布式场景下高效解决 TP 场景申请, OceanBase 提供了多种执行模式,包含本地执行、近程执行、DAS 执行。
图 5 OceanBase 执行引擎的多种执行模式
以后,OceanBase SQL 执行引擎可能很好地满足用户对 HTAP 执行能力的需要,将来咱们还将面向列存及新硬件进一步优化执行引擎能力。
更多具体内容,敬请关注 9 月 15 日 19:30「从 0 到 1 数据库内核实战教程」官网课程。
附录:
内核实战教程第一期 | 成为内核开发者的第一步:搭建研发环境
内核实战教程第二期|带你揭开数据库存储构造的神秘面纱
内核实战教程第三期|为什么索引能够让查问变快?
内核实战教程第四期|带你走进数据库 SQL 引擎
课程回放
报名直播:https://open.oceanbase.com/ac…