MySQL 基本架构
MySQL 的架构共分为两层:Server 层和存储引擎层。Server 层负责建立连接、解析和执行 SQL 语句,存储引擎层负责数据的存储和提取
一些重要部件:
- 连接器: 建立连接,管理连接、校验用户身份;
- 查询缓存: 查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;
- 分析器: 解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;
- 执行 SQL:执行 SQL 共有三个阶段:
- 预处理阶段:检查表或字段是否存在;将 select * 中的 * 符号扩展为表上的所有列。
- 优化阶段:基于查询成本的考虑,选择查询成本最小的执行计划;
- 执行阶段:根据执行计划执行 SQL 查询语句,从存储引擎读取记录,返回给客户端;
为什么 MySQL 要移除查询缓存?
因为查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。很可能前脚刚把结果存起来,后脚还没用就被一个更新全清空了。对于更新压力大的数据库来说,查询缓存的命中率会非常低。 除非业务使用的是一张静态表,很长时间才会更新一次。比如,一个系统配置表,那这张表上的查询才适合使用查询缓存。