![](https://csdnimg.cn/release/download_crawler_static/86384394/bg1.jpg)
《MySQL 性能调优与架构设计》中第二章讲到了 MySQL Server 系统架构:
主要是逻辑模块组成和各模块工作的配合。
#########################################
1 逻辑模块组成
总的来说,MySQL 可以看成是二层架构,第一层我们通常叫做 SQL Layer,在 MySQL
数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql 解析,
执 行 计 划 优 化 , query cache 的 处 理 等 等 ; 第 二 层 就 是 存 储 引 擎 层 , 我 们 通 常 叫 做
StorageEngine Layer,也就是底层数据存取操作实现部分,由多种存储引擎共同组成。所以,
可以用如下一张最简单的架构示意图来表示 MySQL 的基本架构,如图 2-1 所示:
虽然从上图看起来 MySQL 架构非常的简单,就是简单的两部分而已,但实际上每一层
中都含有各自的很多小模块,尤其是第一层 SQL Layer,结构相当复杂的。下面我们就分别
针对 SQL Layer 和 Storage Engine Layer 做一个简单的分析。
SQL Layer 中包含了多个子模块,下面我将逐个做一下简单的介绍:
1、初始化模块
顾名思议,初始化模块就是在 MySQL Server 启动的时候,对整个系统做各种各样的初
始化操作,比如各种 buffer,cache 结构的初始化和内存空间的申请,各种系统变量的初始
化设定,各种存储引擎的初始化设置,等等。
2、核心 API
核心 API 模块主要是为了提供一些需要非常高效的底层操作功能的优化实现,包括各
种底层数据结构的实现,特殊算法的实现,字符串处理,数字处理等,小文件 I/O,格式化
输出,以及最重要的内存管理部分。核心 API 模块的所有源代码都集中在 mysys 和 strings
文件夹下面,有兴趣的读者可以研究研究。
3、网络交互模块
底层网络交互模块抽象出底层网络交互所使用的接口 api,实现底层网络数据的接收与
发送,以方便其他各个模块调用,以及对这一部分的维护。所有源码都在 vio 文件夹下面。
4、Client & Server 交互协议模块
任何 C/S 结构的软件系统,都肯定会有自己独有的信息交互协议, MySQL 也不例外。