MySQL基础架构
# MySQL 基础架构
理解 MySQL 的基础架构有助于我们了解一条 SQL 查询语句是如何执行的。
# 1. MySQL 逻辑架构
SQL 语句在 MySQL 各个功能模块中的执行过程如下图所示:
大体来说,MySQL 可以分为 Server 层和存储引擎层两部分:
- Server 层:
- 包括连接器、查询缓存(MySQL 8.0 已移除)、分析器、优化器、执行器等。
- 涵盖了 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等)。
- 所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
- 存储引擎层:
- 负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。
- 现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。
- 我们执行
CREATE TABLE
建表的时候,可以通过ENGINE=MyISAM
指定使用的存储引擎,不指定则使用默认引擎 InnoDB。
# 2. 主要组件功能
- 连接器: 负责跟客户端建立连接、获取权限、维持和管理连接。
- 查询缓存: (MySQL 8.0 已移除) 之前用于缓存查询结果,key 是查询语句,value 是查询结果。由于缓存失效非常频繁(只要表有更新,缓存即清空),命中率不高,因此在 8.0 版本被移除。
- 分析器: 对 SQL 语句进行词法分析和语法分析,判断 SQL 语句是否正确。
- 优化器: 在 SQL 语句执行前,决定使用哪个索引、表的连接顺序等,生成最优的执行计划。
- 执行器: 根据优化器生成的执行计划,调用存储引擎的接口来执行 SQL 语句,返回结果。
# 3. 总结
一条查询语句的执行流程大致是:客户端通过连接器连接到 MySQL 服务器;如果查询缓存开启(8.0 前),先查询缓存;若未命中,则通过分析器进行语法分析;然后优化器生成执行计划;最后执行器调用存储引擎接口执行查询并返回结果。
上次更新: 6/21/2025