写点什么

openGauss 数据库源码解析系列文章——SQL 引擎源码解析(1.1)

作者:daydayup
  • 2023-07-24
    北京
  • 本文字数:525 字

    阅读完需:约 2 分钟

openGauss 数据库源码解析系列文章——SQL 引擎源码解析(1.1)

SQL 引擎作为数据库系统的入口,主要承担了对 SQL 语言进行解析、优化、生成执行计划的作用。对于用户输入的 SQL 语句,SQL 引擎会对语句进行语法/语义上的分析以判断是否满足语法规则等,之后会对语句进行优化以便生成最优的执行计划给执行器执行。故 SQL 引擎在数据库系统中承担着承上启下的作用,是数据库系统的“大脑”。

一、**概述**

SQL 引擎负责对用户输入的 SQL 语言进行编译,生成可执行的执行计划,然后将执行计划交给执行引擎进行执行。SQL 引擎整个编译的过程如图 1 所示,在编译的过程中需要对输入的 SQL 语言进行词法分析、语法分析、语义分析,从而生成逻辑执行计划,逻辑执行计划经过代数优化和代价优化之后,产生物理执行计划。



图 1 SQL 引擎编译流程图

通常可以把 SQL 引擎分成 SQL 解析和查询优化两个主要的模块,openGauss 中参照 SQL 语言标准实现了大部分 SQL 的主要语法功能,并结合应用过程中的具体实践对 SQL 语言进行了扩展,具有良好的普适性和兼容性。openGauss 的查询优化功能也主要分成了逻辑优化和物理优化两个部分,从关系代数和物理执行两个角度对 SQL 进行优化,进而结合自底向上的动态规划方法和基于随机搜索的遗传算法对物理路径进行搜索,从而获得较好的执行计划。

用户头像

daydayup

关注

还未添加个人签名 2023-07-18 加入

还未添加个人简介

评论

发布
暂无评论
openGauss数据库源码解析系列文章——SQL引擎源码解析(1.1)_opengauss_daydayup_InfoQ写作社区