【连载】如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(1)

openGauss数据库核心技术

🔒

openGauss:The Core Technologies

华为公司从开始自研数据库至今已经有近20年历史,在去年6月30日,华为正式宣布开源数据库能力,开放openGauss数据库源代码,并成立openGauss开源社区,社区官网同步上线。从开源至今的短短不到一年半的时间,openGauss的版本在不断的进行迭代升级,如今已更新至2.1.0版本。

据上半年统计报告显示,openGauss社区官方网站访问量78万+;官方网站访客人数7万+;官方网站安装包下载量16万+,下载遍及全球49个国家328个城市;社区开发者人数1200+;社区累计需求代码PR提交数达到2600+,累计Commit数达到4500+。

越来越多的企业签署社区CLA,参与社区代码贡献。并且,其中有6家合作伙伴发布基于openGauss的商业发行版,例如云和恩墨基于openGauss商业发行版“MogDB”就已经落地邮储银行、民生银行。

此外,openGauss的热度也在不断地攀升,在短短一年半的时间内,一跃国产数据库排行榜前三的席位,倍受大家的关注。

在关注度不断上升的情况下,为了让大家能更好的掌握openGauss相关知识,即日起,我们将连载《openGauss数据库核心技术》系列文章,与大家一起学习openGauss数据库的核心技术,我们将从以下几大方面进行更新:

  • openGauss数据库SQL引擎

  • openGauss数据库执行器技术

  • openGauss存储技术

  • openGauss事务机制

  • openGauss数据库安全

感兴趣的小伙伴记得关注我们的公众号~

openGauss数据库SQL引擎

数据库的SQL引擎是数据库重要的子系统之一,它对上负责承接应用程序发送过来的SQL语句,对下则负责指挥执行器运行执行计划。其中优化器作为SQL引擎中最重要、最复杂的模块,被称为数据库的“大脑”,优化器产生的执行计划的优劣直接决定数据库的性能。

SQL引擎概览

    SQL引擎是数据库系统重要组成部分,它的主要职责是负责将应用程序输入的SQL在当前负载场景下生成高效的执行计划,在SQL的高效执行上扮演重要角色。SQL在SQL引擎里执行过程,如图7-1所示。

59cbad8b8a0c4641edd190062d51d96c.png

图1  SQL执行流程

从图7-1中可以看出,应用程序的SQL需要经过SQL解析生成逻辑执行计划、经过查询优化生成物理执行计划,然后将物理执行计划转交给查询执行引擎做物理算子的执行操作。

SQL解析通常包含词法分析、语法分析、语义分析几个子模块。SQL语言是介于关系演算和关系代数之间一种描述性语言,它吸取了关系代数中一部分逻辑算子的描述,而放弃了关系代数中“过程化”的部分,SQL解析主要的作用就是将一个SQL语句编译成为一个由关系算子组成的逻辑执行计划。

描述语言的特点是规定了需要获取的“WHAT”,而不关心“HOW”,也就是只关注结果而不关注过程,因此SQL语言描述性的特点导致查询优化在数据库管理系统中具有非常重要的作用。

查询重写则是在逻辑执行计划的基础上进行等价的关系代数变换,这种优化也可以称为代数优化,虽然两个关系代数式获得的结果完全相同,但是它们的执行代价却可能有很大的差异,这就构成了查询重写优化的基础。

在早期的数据库管理系统中,通常采用基于启发式规则的方法来生成最优的物理执行计划,但是这种基于规则的优化的灵活度不够,常常导致产生一些次优的执行计划,而代价估算的引入,则从根本上解决了基于规则优化的不足。

基于代价的优化器一方面生成“候选”的物理执行路径,另一方面对这些执行路径计算它们的执行代价,这样就建立了执行路径的筛选标准,从而能够通过比较代价而获得最优的物理执行计划。

SQL解析

SQL语句在数据库管理系统中的编译过程符合编译器实现的常规过程,需要进行词法分析、语法分析和语义分析。

§ 词法分析:从查询语句中识别出系统支持的关键字、标识符、操作符、终结符等,每个词确定自己固有的词性。

§ 语法分析:根据SQL语言的标准定义语法规则,使用词法分析中产生的词去匹配语法规则,如果一个SQL语句能够匹配一个语法规则,则生成对应的抽象语法树(Abstract Syntax Tree,AST)。

§ 语义分析:对语法树(AST)进行有效性检查,检查语法树中对应的表、列、函数、表达式是否有对应的元数据,将抽象语法树转换为逻辑执行计划(关系代数表达式)。

在SQL语言标准中,确定了SQL语言的关键字以及语法规则信息,SQL解析器在做词法分析的过程中会将一个SQL语句根据关键字信息以及间隔信息划分为独立的原子单位,每个单位以一个词的方式展现,例如有SQL语句:

SELECT w_name FROM warehouse WHERE w_no = 1;

可以划分的关键字、标识符、操作符、常量等原子单位,如表7-1所示。

词性

内容

关键字

SELECT、FROM、WHERE

标识符

w_name、warehouse、w_no

操作符

=

常量

1

 表1  词法分析的特征

语法分析会根据词法分析获得的词来匹配语法规则,最终生成一个抽象语法树(AST),每个词作为语法树的叶子结点出现,如图7-2所示。

249ca34f42ef326445b619d93189f9bc.png

图2  抽象语法树

抽象语法树表达的语义还仅仅限制在能够保证应用的SQL语句符合SQL标准的规范,但是对于SQL语句的内在含义还需要做有效性的检查。

§ 检查关系的使用:FROM子句中出现的关系必须是该查询对应模式中的关系或视图。

§ 检查与解析属性的使用:在SELECT句中或者WHERE子句中出现的各个属性必须是FROM子句中某个关系或视图的属性。

§ 检查数据类型:所有属性的数据类型必须是匹配的。

在有效性检查的同时,语义分析的过程还是有效性语义绑定(Bind)的过程,通过语义分析的检查,抽象语法树就转换成一个逻辑执行计划,逻辑执行计划可以通过关系代数表达式的形式来表现,如图7-3所示。

963f9e3a2652fd420558f01204428a06.png

图3  关系代数表达式

未完待续......

a89112aa6548b23f260f9949a67eef60.png

若您对本文感兴趣,敬请关注我们的公众号,我们将在本周四进行第二篇内容的更新。

更多数据库行业相关内容,欢迎光临 2021 数据技术嘉年华 :https://www.modb.pro/dtc2021(扫描下方二维码免费领取大会门票)

相关阅读:

END

推荐阅读:267页!2020年度数据库技术年刊

推荐下载:2020数据技术嘉年华PPT下载


2020数据技术嘉年华近50个PPT下载、视频回放已上传墨天轮平台,可在“数据和云”公众号回复关键词“2020DTC”获得!

你知道吗?我们的视频号里已经发布了很多精彩的内容,快去看看吧!↓↓↓

点击下图查看更多 ↓

8b4c26267f1324ada185de28765e49ee.png

0a0474bf5a42768e7d9ad0aa75fb6e18.png

c711bdd35bceadb4767687428a8da041.png

云和恩墨大讲堂 | 一个分享交流的地方

长按,识别二维码,加入万人交流社群

请备注:云和恩墨大讲堂

  点个“在看” 

你的喜欢会被看到❤

  • 1
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

数据和云

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值