暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【手写数据库内核miniToadb】第12天 开启执行引擎的篇章

开源无限 2024-12-26
76

作者在数据库内核设计从业十余年;设计开发分布式数据内核;编写从零手写数据库教程;现在将过去的数据库内核经验一一分享,有兴趣的朋友加个关注。

一、概述 


执行器是数据库内核中执行运算的部件,完成各类具体运算的部件都可以称为执行器,通常所说的执行器指的是SQL执行器。它通常包括SQL解析器、查询优化器和执行引擎三个部分,负责将SQL语句转化为底层的数据操作指令,并将指令传递给底层的存储引擎执行。同时,执行器还负责优化SQL语句的执行计划,以提高查询效率。

二、执行引擎 


SQL执行引擎,它接收经过分析和优化后的携带SQL信息的数据结构,并根据这些信息调用存储引擎对应的接口,完成对数据的存储,检索,修改的任务。它是SQL从解析到最终产生结果的关键步骤,确保SQL能够正确、高效的执行。

数据库内核模块

SQL执行引擎管理和控制整个流程按照SQL的语义完成相应的动作,在整个数据库架构中占据了中枢的作用,它几乎与其它模块都会交互。

比如创建表SQL在执行时,会在数据字典中增加一条表的信息记录,同时还会创建一个与表名对应的文件,用来存储表的数据。

在这个过程中,SQL执行器的输入是由解析模块产生,执行的过程中,会与数据字典模块交互,还会与存储模块交互,过程中还会涉及到一些数据结构的使用,动态内存的分配等。

SQL在执行过程中会与存储引擎进行交互,发送数据读取请求或数据写入请求。

存储引擎负责与数据库存储进行交互,从数据库存储中读取数据到内存和把内存中的数据写入到数据库存储。

执行器将执行结果返回给客户端。这些结果可能是查询结果、更新结果或其他类型的操作结果。

三、我们要做什么 


因此,在完成SQL执行器模块之前,先要准备好必备的两个模块,一个是数据字典模块,记录数据库中的元数据信息;一个是存储模块,数据在内存和物理磁盘上的存储管理。

在执行过程中,交互最多的就是这两个模块,从数据字典中查找表的定义信息,表的字段类型等,从内存或磁盘上读取表的数据内容进行处理;新增或修改表的定义信息,更新到数据字典模块,表数据持久化存储到磁盘文件当中。

四、总结 


通过之前的章节,已经完成了创建表的SQL的解析模块,从本节开始继续完成它的执行模块的功能。

文章转载自开源无限,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论