MySQL 基础架构分层及各层职责
概述
MySQL 的架构设计是面试高频题。理解其分层思想,能帮你快速定位问题、优化查询。整体上 MySQL 分为两层:Server 层 和 存储引擎层。
架构分层总览
graph TB
Client[客户端连接]
subgraph Server层
Connector[连接器
连接管理/权限校验]
QueryCache[查询缓存
8.0已移除]
Parser[分析器
词法/语法分析]
Optimizer[优化器
索引选择/执行计划]
Executor[执行器
调用引擎接口]
end
subgraph 存储引擎层
InnoDB[InnoDB]
MyISAM[MyISAM]
Memory[Memory]
CSV[CSV]
end
Client --> Connector
Connector --> QueryCache
Connector --> Parser
Parser --> Optimizer
Optimizer --> Executor
Executor --> InnoDB
Executor --> MyISAM
Executor --> Memory
Executor --> CSV
各层职责
1. 连接器(Connector)
- 负责与客户端建立连接
- 验证用户名和密码
- 查询当前用户的权限信息并缓存
- 管理线程池 / 连接池
2. 查询缓存(Query Cache)
- 缓存完整的 SELECT 语句及其结果
- MySQL 8.0 已完全移除
- 移除原因:表一旦有更新,缓存立即失效,命中率极低
3. 分析器(Parser)
- 词法分析:解析 SQL 语句的每个词,识别关键字、表名、列名等
- 语法分析:检查 SQL 语法是否符合 MySQL 语法规则
- 输出:解析树(Parse Tree)
4. 优化器(Optimizer)
- 决定使用哪个索引
- 决定表的连接顺序
- 生成执行计划
- 核心目标:选择成本最低的执行路径
5. 执行器(Executor)
- 根据执行计划调用存储引擎接口
- 逐行判断是否符合 WHERE 条件
- 将结果返回给客户端
6. 存储引擎层
- 负责数据的存储和读取
- 支持插件式架构
- 每个表可以选用不同的引擎
一条查询语句的完整流程
SELECT * FROM user WHERE id = 1;
- 连接器:验证权限,建立连接
- 分析器:解析 SQL,生成解析树
- 优化器:决定使用主键索引 id
- 执行器:调用 InnoDB 接口,根据 id=1 查到数据并返回
面试要点
- 分层核心意义:Server 层与存储引擎层解耦,让存储引擎可插拔
- 8.0 架构变化:移除查询缓存,增加数据字典(Data Dictionary)
- 一条 SQL 经过的组件:连接器 → 分析器 → 优化器 → 执行器 → 引擎
一句话总结:MySQL 的架构分层实现了”逻辑处理与存储分离”,这是它支持多种存储引擎的基础。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


暂无评论内容