4.1 解析器概述
在数据库系统中,解析器与执行器的作用紧密相关。当数据库系统需要执行一条查询执行时,需要通过结构化查询语言(SQL)描述这一查询过程传递给解析器。解析器的主要功能在于解析输入的SQL语句并将其转化为一套高效的物理执行计划交由执行器完成。内部的工作流程可以概括为3个部分: 1. 词法语法分析:SQL语句到抽象语法树 2. 逻辑优化:抽象语法树到逻辑计划树 3. 物理优化:逻辑计划树到物理执行计划
经过词法和语法分析,SQL语句可以转化为抽象语法树,这一部分是编译原理课程的主要内容,期间不需要考虑数据库系统的设计和底层存储结构等任何与数据库系统实现相关的内容。所以这一部分不作为本课程关注的重点。根据我们所给出的语法文件,直接利用antlr的访问者模式可以比较轻松地完成这一步转化工作。
数据库解析器的特色在于其抽象语法树的后续处理过程,与编译器和解释器不同,此处不会结合系统和虚拟机特性转化为某种编码格式,而是需要结合数据库的一些统计信息和存储结构,在可能面临的很多种执行方案中规划出一套相对较优的实际物理执行计划并传递给执行器完成这一工作。这一部分包含了逻辑优化和物理优化两个过程,这一部分将成为各位同学思考的重点。
Authors: