MySQL逻辑架构
MySQL逻辑架构分为三层:
- 连接层
- 服务层
- 存储引擎层
连接层
连接层负责连接处理、授权认证、安全等。
- 每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或CPU中运行。
- 服务器会负责缓存线程(线程池),因此不需要为每个新建的连接创建或销毁线程。
- 客户端连接到服务器时,服务器需要对其进行认证。认证基于用户名、原始主机信息和密码。如果使用了SSL的方式连接,还可以使用证书认证。
- 一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个查询的权限。
服务层
大多数MySQL的核心服务功能都在服务层。包括查询解析、分析、优化、缓存以及所有的内置函数(例如,日期、时间、数学和加密函数),所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。
存储引擎层
存储引擎负责MySQL中数据的存储和提取。服务器通过API与存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明。
每个存储引擎都有它的优势和劣势。存储引擎不会去解析SQL,不同存储引擎之间也不会通信,而只是简单的响应上层的请求。
理解MySQL在存储引擎和服务层之间处理查询时如何通过API来回交互,是抓住MySQL核心基础架构精髓的关键。