MySQL 的核心设计哲学是:大脑(逻辑处理)与肢体(物理存取)分离。
第一层:连接层 (Connection Layer) —— 【门卫与准入】
这是所有请求进入 MySQL 的第一道关卡。
-
主要组件:连接池 (Connection Pool)
-
组件作用:
- 身份认证:验证你的用户名和密码。
- 权限核实:判断你有没有权限操作你要查的那张表。
- 连接管理:维持你和数据库之间的这条“线”,不用每次传数据都重新握手。
-
💡 理解要点:它像超市的入场闸机,负责验票和挡住没有权限的人。
第二层:服务层 (Server Layer) —— 【大脑与调度】
-
组件一:解析器 (Parser)
- 作用:词法与语法分析。它会把你的 SQL 语句拆解成一棵“解析树”,检查有没有语法错误(比如
SELECT写成了SELEC)。
- 作用:词法与语法分析。它会把你的 SQL 语句拆解成一棵“解析树”,检查有没有语法错误(比如
-
组件二:优化器 (Optimizer) —— 【灵魂大脑】
- 作用:制定路线图。如果表中有多个索引,优化器会计算出哪种路径最省钱、最快。它决定了 SQL 的最终执行效率。
-
组件三:执行器 (Executor)
- 作用:下达任务。它拿着优化器的“方案”,去调用底层存储引擎的 API 接口来获取数据。
-
💡 形象理解:它是参谋部。解析器是翻译官,优化器是军师,执行器是传令官。
第三层:引擎层 (Storage Engine Layer) —— 【仓库与搬运】
这是 MySQL 最具特色的地方,采用的是“插拔式”设计。
-
核心组件:InnoDB (默认引擎)
- 作用:真正执行读写操作。
- 核心功能:支持事务(保证转账安全)、行级锁(提升并发,只锁那一行)、外键。
-
备选组件:MyISAM、Memory 等
- 作用:根据业务需求更换。有的引擎读得快但怕丢数据,有的引擎存内存速度飞起。
-
💡 理解要点:它是仓库管理员。不同的管理员有不同的专长(有的快、有的稳、有的省空间)。
📝 总结:组件如何串联?
通过一次 SELECT 查询,看清组件的联动:
- 连接层:确认你是个合法的用户。
- 服务层(解析器) :看清你确实是要查数据,且 SQL 没写错。
- 服务层(优化器) :算了一下,走“主键索引”最快,生成方案。
- 服务层(执行器) :拿着方案,去敲引擎层的门。
- 引擎层(InnoDB) :去磁盘把货提出来,交给执行器。
💡 核心设计思想:解耦
MySQL 将 “怎么处理请求 (Server层)” 和 “怎么存取数据 (引擎层)” 完全分开。
- 好处:无论底层仓库怎么变(换了存储介质或引擎),上层的业务大脑完全不受影响。