查询语句的执行流程如下:连接数据库,权限校验--->查询缓存--->分析器--->预处理器---->优化器--->权限校验--->执行器--->存储引擎

 MySQL 的架构共分为两层:Server 层和存储引擎层,Server 层负责建立连接、分析和执行 SQL。存储引擎层负责数据的存储和提取。

1、连接数据库

  • 通过连接器,客户端与服务器三次握手建立TCP连接
  • 建立连接后,效验用户名和密码
  • 用户名密码正确后,读取用户权限

2、去查询缓存里查找缓存数据,如果查询语句命中缓存则会直接返回查询结果给客户端。

查询缓存在一个表有update时候会清空,所以很鸡肋,mysql8.0删除了

 

3、解析器进行词法和语法分析

 

4、预处理器检查查询语句的表或者字段是否存在,以及将select * 的 * 扩展为所有的列

 

5、优化器确定查询语句的执行方案,可以使用explain + sql语句查看执行计划

 

6、执行器根据执行计划执行sql语句并返回结果给客户端