MySQL 的逻辑架构
第一层:服务器层/客户端层
- 提供连接处理,授权认证,安全等功能
第二层:核心服务层/功能层
- 实现MySQL的核心服务功能,包括查询解析、分析、优化、缓存以及日期时间等所有内置函数,所有跨存储引擎的功能都在这一层实现。例如存储过程、触发器、视图等
第三层:存储引擎层
- 存储引擎负责MySQL中数据的存储和提取。
- 服务器通过api与存储引擎通信,这些接口屏蔽了不同存储引擎的差异,使得差异对上层查询过程透明。
- 除了会解析外键定义的innoDB外,存储引擎不会解析sql
- 不同存储引擎之间也不会相互通信,只是简单响应上层服务器请求
查询执行流程
- 客户端发送一条查询给服务器
- 服务器先检查查询缓存,如果命中了缓存就立即返回存储在缓存中的结果
- 服务器进行sql解析、预处理,再由优化器生成相应的执行计划
- MySQL根据优化器生成的优化计划,调用存储引擎的api来执行查询
- 将结果返回给客户端