这篇文章主要回答一条SQL语句在数据库中执行的过程
1、什么是数据库
我们可以用最简单的理解方式:
1)数据库(Database)是存放数据的仓库
2)跟其他仓库一样,我们的数据存放需要遵循一定的规则
3)数据库的基本表现形式是数据文件
4)数据库管理系统(Database Management System)是管理数据库的软件系统,通常我们说的数据库其实是指的数据库管理系统
2、数据库的常见分类
下图整理了下常见的分类,这些分类方式并非互斥,一个数据库可能同时属于多个分类
我们平常用得多的数据库属于关系型集中式事务数据库,比如Oracle,MySQL,SQLServer,PostgreSQL等
3、数据库的运行结构
以关系型集中式事务数据库来讲,先看一下整体结构
3.1、监听器 Listener
监听器负责接受并处理来自客户端的数据库连接请求,会创建一个客户端到数据库服务的连接
3.2、解析器 Parser
Parser 可以理解为数据库的翻译系统,经过parser之后,会输出语法树结构(逻辑上的执行计划树)
解析器往细了分为两个部分
**语法分析器:**分析SQL语句要做什么操作以及是否符合SQL标准
**词法/语义分析器:**SQL语句中对象的合法性以及权限的判断
3.3、优化器 Optimizer
Optimizer是对SQL的实际执行过程进行性能优化的组件,解决的是对应的SQL要怎么做的问题
优化器的输入是解析器生成的语法树,输出的是物理执行计划
3.4、执行器 Executer
Executer负责逐条执行优化器生成的物理执行计划,根据执行计划的具体步骤进行操作和运算
执行器主要是调用操作系统的相关接口完成内存操作和文件操作
3.5、存储管理器Storage Manager
Storage Manager与数据库存储进行交互,主要做两件事
1)从数据库存储中读取数据
2)把内存中的数据写入到数据库存储