一条SQL查询语句的执行过程是怎样的?

101 阅读1分钟

SQL查询流程图如下,具体执行过程可以分为取得连接、查询缓存、分析、执行四个阶段: image.png

连接器

通过MySQL的连接器,取得连接。

MySQL基于TCP协议传输,需要先完成三次握手建立连接,校验客户端用户名、密码,校验用户权限后,建立连接。

查询缓存

key为SQL语句,value为查询结果,查询缓存是否命中。

数据库表只要进行更新操作,表的查询缓存就被清空,所以更新比较频繁的表 缓存命中率很低。MySQL8.0之后已经将查询缓存删除。

分析器

词法分析 分析SQL语句关键字。

语法分析 进行语法校验。

构建SQL语法树,后续读取表名、字段等。

执行阶段

预处理

  • 检查表、字段等对象是否存在
  • 对同名对象进行处理
  • 验证数据类型
  • 其他操作

优化器

生成执行计划。

  • 决定使用哪个索引
  • 决定表的连接顺序

执行器

使用当前数据库 存储引擎提供的接口,按照执行计划进行处理。