写点什么

mysql 查询执行过程

作者:周杰伦本人
  • 2022 年 9 月 16 日
    贵州
  • 本文字数:581 字

    阅读完需:约 2 分钟

mysql 查询执行过程

查询执行过程


  1. 客户端发送一条查询给服务器

  2. 服务器先检查查询缓存,如果命中了缓存,立刻返回存储在缓存中的结果。

  3. 如果没有命中缓存,服务端进行 sql 解析、预处理,再由优化器生成对应的执行计划。

  4. Mysql 根据优化器生成的执行计划,调用存储引擎的 API 来执行查询。

  5. 将结果返回给客户端


Mysql 客户端和服务端之间的通信协议是半双工的,在任何一个时刻,要么由服务器向客户端发送数据,要么由客户端向服务器发送数据,这两个动作不能同时进行。

查询缓存

在解析一个查询语句之前,如果查询缓存是打开的,mysql 会优先检查这个查询是否命中查询缓存中的数据。这个检查是通过一个对大小写敏感的哈希查找实现的。查询和缓存中的查询只有一个字节不同也不会匹配缓存结果。


如果当前的查询恰好命中了查询缓存,在返回查询结果之前 mysql 会检查一次用户权限。如果权限没有问题,mysql 会直接从缓存中拿到结果并返回给客户端。

查询过程

将 sql 转换成一个执行计划,mysql 依照这个执行计划和存储引擎进行交互。


解析 sql,预处理,优化 sql 执行计划。

语法解析和预处理

mysql 通过关键字将 sql 语句进行解析,生成一个解析树,mysql 解析器使用 mysql 语法规则验证和解析查询。


预处理器根据一些 mysql 规则进一步检查解析树是否合法,然后预处理器验证权限


语法树校验完成后,由优化器转化为执行计划。一条查询可以有多种执行方式,优化器找到最好的执行计划。

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2020.02.29 加入

公众号《盼盼小课堂》,多平台优质博主

评论

发布
暂无评论
mysql 查询执行过程_9月月更_周杰伦本人_InfoQ写作社区