整体架构如下图:
连接层
连接层主要负责对来自客户端的连接请求进行权限校验并保存客户端的连接信息。
服务层
服务层是整个数据库服务器的核心,主要包括了:NoSQL接口,SQL接口,缓存,解析器,优化器。
NoSQL和SQL接口
负责接收从客户端发送的各种SQL语句和命令,然后将信息发送到其他部分,之后将结果返回给客户端。
缓存(8.0版本缓存已被删除)
MySQL的缓存是为了提高查询效率,缓存以key、value的形式进行存储。key-查询语句,value-结果。如果命中缓存,直接返回结果,无法命中缓存,则进入解析器进行正常查询流程。
解析器
将SQL语句中的关键字和自定义字段进行提取和解析。
优化器
会根据执行计划来匹配合适索引,选择最佳的执行方案。
存储引擎层
一系列可插拔的存储引擎,主要负责数据的写入和读取,与底层的数据和日志文件进行交互。
可以使用 SHOW ENGINES 语句来查看当前服务器支持哪些存储引擎。
第一列是存储引擎的名称;第二列是状态(YES:支持;NO:不支持;DEFAULT:当前使用) ;第三列是简介;第四列是否支持事务;第五列是是否支持分布式;最后一列是是否支持事务的保存点。
系统文件层
包含了MySQL发行版的文件和程序,以及具体数据库文件和日志。