MySQL 体系架构
本文将介绍 MySQL 服务端的体系架构。
一、概述
整个 MySQL 服务端由以下部分组成:
- 连接层
- 服务层
- Connection Pool:连接池
- Management Services & Utilities:系统管理和控制工具
- SQL Interface:SQL 接口
- Parser:解析器
- Optimizer:查询优化器
- Caches & Buffers:缓存
- 存储引擎层
- 文件层
二、连接层
连接层主要完成连接处理、授权认证、安全处理等工作,客户端可以采用 TCP/IP、命名管道或共享内存、Unix 域套接字等方式与服务器建立连接。
三、服务层
1. 连接池
连接池负责存储和管理客户端和服务器的连接信息,并且通过动态分配的方式减少了创建和销毁线程的性能开销。
- 当建立连接时,服务器会检查是否有可用的 “交互线程”,
- 如果有,将该线程分配给该客户端
- 如果没有,创建一个线程
- 当断开连接时,服务器不会将 “交互线程” 销毁,而是会将其缓存,待新客户端连接时分配给它使用,从而达到了不频繁创建和销毁线程的目的
2. 系统管理和控制工具
提供数据库系统的管理和控制功能。
3. SQL 接口
负责接收客户端发过来的 SQL,将其转发到其它部分;接收其它部分返回的结果数据,将其返回给客户端。
4. 解析器
做语法验证、合法性判断,然后将请求的 SQL 解析为一颗 “解析树”。
5. 查询优化器
根据 “解析树” 生成执行计划,与存储引擎交互,借助存储引擎访问数据。
6. 缓存
包括表缓存、记录缓存、权限缓存、引擎缓存等。
四、存储引擎层
在 MySQL 中,存储引擎负责具体的数据存储和提取工作。
MySQL 提供了各式各样的存储引擎,它们管理的表具体的存储结构可能不同,采用的存取算法也可能不同。
MySQL 中的存储引擎是插件式的,服务层通过 API 与存储引擎通信,通信时无需注意不同存储引擎之间的差异。
五、存储层
包括了数据文件、日志文件、配置文件等。
参考
- MySQL 技术内幕
- MySQL 实战 45 讲
- MySQL 是怎样运行的:从根儿上理解 MySQL