- 客户端向服务器端发送SQL命令和连接参数
- 服务器端连接模块连接并验证
- 缓存模块解析SQL为Hash并与缓存中Hash表对应。如果有结果直接返回结果,如果没有对应继续向下执行。如果是MySQL 8 是没有查询缓存的。
- 解析器解析SQL为解析树,检查关键字相关问题,如果出现错误,报SQL解析错误。如果正确,继续执行
- 预处理器对解析树继续处理检查表、列别名等,处理成功后生成新的解析树。
- 优化器根据开销自动选择最优执行计划,生成执行计划
- 执行器执行执行计划,访问存储引擎接口
- 存储引擎访问物理文件并返回结果
- 如果开启查询缓存,缓存管理器把结果放入到查询缓存中。
- 返回结果给客户端