- 建立连接(Connectors & Connection Pool),通过客户端/服务器通讯协议与MySQL 建立连接。
- 查询缓存(Cache & Buffer),如果开启了查询缓存且在查询缓存过程中查询到完全相同的 SQL 语句,则将查询结果直接返回给客户端;如果没有开启查询缓存或者没有查询到完全相同的 SQL 语句则会由解析器进行语法语义解析,并生成“解析树”。
- 解析器(Parser)将客户端发送的 SQL 进行语法分析,生成“解析树”。预处理器根据一些 MySQL 规则进一步检查“解析树”是否合法
- 查询优化器(Optimizer)根据“解析树”生成最优的执行计划。MySQL 使用很多优化策略生成最优的执行计划,可以分为两类:静态优化(编译时优化)、动态优化(运行时优化)。
- 查询执行引擎负责执行 SQL 语句,此时查询执行引擎会根据 SQL 语句中表的存储引擎类型,以及对应的 API 接口与底层存储引擎或者物理文件的交互情况,得到查询结果并返回给客户端。
若开启了查询缓存,这时会将 SQL 语句和结果完整地保存到查询缓存(Cache & Buffer)中,以后若有相同的 SQL 语句执行则直接返回结果。
- 建立连接
- 查询缓存
- 解析器
- 查询优化器
- 执行引擎负责执行 SQL 语句
- 返回结果
SQL预编译