阅读 298

mysql查询执行过程(mysql存储过程循环执行查询)

mysql 查询执行过程 ①

查询执行过程

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

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

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

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

  5. 将结果返回给客户端

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

查询缓存

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

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

查询过程

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

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

语法解析和预处理

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

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

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


作者:周杰倫本人
链接:https://juejin.cn/post/7031139233100201998

文章分类
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐