执行一条select语句会发生什么

发布时间 2023-05-25 17:58:53作者: coooooookie

查询语句的执行流程如下:权限校验(如果命中缓存)--->查询缓存--->分析器--->预处理器---->优化器--->权限校验--->执行器--->引擎

 

1、连接数据库

  • 通过连接器,客户端与服务器三次握手建立TCP连接

 

  • 建立连接后,效验用户名和密码
  • 用户名密码正确后,读取用户权限

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

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

 

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

 

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

 

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

 

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