MySQL逻辑架构设计

通常MySQL架构有两种划分,一种划为两层架构,另一种划为三层。
两层架构划为MySQL服务器层和存储引擎层,三层架构则把MySQL层又划为两层。

MySQL架构图

三层架构说明

  • 第一层,用于连接处理、授权认证、安全认证等等。大多数基于客户端/服务器端的工具或者服务器都有类似架构。

  • 第二层,是MySQL架构的核心部分。MySQL的大部分核心服务功能大都在这一层。包括查询解析、分析、优化、缓存以及所有的内置函数的实现,还有所有的跨存储引擎的功能都在这一层实现:存储过程、触发器、试图等。

  • 第三层,存储引擎层。存储引擎负责MySQL中数据的存储和读取。每个存储引擎都有自己的优势和劣势。MySQL服务器层通过API与存储引擎进行通信。存储引擎本身是不会解析SQL,且不同的存储引擎之间也是不会相互通信。

MySQL服务器接收/处理一个查询请求的过程

  1. 当MySQL服务器接收到一个查询请求,首先会对当前的连接请求进行认证,认证其用户名和密码信息。

  2. 连接成功之后,会继续验证该连接是否具有执行某个特定查询的权限。

  3. 所有的验证都通过,如果是 select 操作,MySQL会先检查查询缓存中是否存在该缓存,如果存在直接返回结果。不存在继续下一步。

  4. 解析查询,并创建内部数据结构(生成 解析树),然后对解析树进行各种优化(包括,重写查询,决定表的读取顺序、选择合适的索引等等)。

  5. 通过存储引擎存储或者提取结果。

  6. 如果是select操作,生成查询缓存。

  7. 返回结果。

over~