zoukankan      html  css  js  c++  java
  • 4.4 查询执行的基础

    MySQL执行一个查询的过程,可以用下图表示:

    我们可以看到当向MySQL发送一个请求的时候,MySQL究竟做了什么:

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

    2、服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一个阶段。

    3、服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划。

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

    5、将结果返回给客户端。

    4.4.1 MySQL客户端/服务器通信协议

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

    4.4.2 查询缓存

    在解析一个查询语句之前,如果查询缓存是打开的,俺么MySQL会优先检查这个查询是否命中查询缓存中的数据。这个检查是通过一个对大小写敏感的哈希查找实现的。查询和缓存中的查询即使只有一个字节不同,那也不会匹配缓存结果,这种情况下查询就会进入下一个阶段的处理。

    4.4.3 查询优化处理

    查询的生命周期的下一步是将一个SQL转换成一个执行计划,MySQL再依照这个执行计划和存储引擎之间进行交互。这包括多个子阶段:解析SQL、预处理、优化SQL执行计划这个过程中的任何错误都可能终止查询。

    4.4.4 查询执行引擎

    在解析和优化阶段,MySQL将生成查询对应的执行计划,MySQL的查询执行引擎则根据这个执行计划来完成整个查询。

    4.4.5 返回结果给客户端

    查询执行的最后一个阶段是将结果返回给客户端。即使查询不需要返回结果集给客户端,MySQL仍然会返回这个查询的一些信息,如该查询影响到的行数。如果查询可以被缓存,那么MySQL在这个阶段也会将结果存放到查询缓存中。

  • 相关阅读:
    配置高并发jdbc连接池
    java中的sleep()和wait()的区别
    程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
    转HashMap Hashtable区别
    chrome 常用快捷操作
    sublime Text 常用操作
    flash 右键菜单隐藏与修改
    As3.0 视频缓冲、下载总结
    flash cs6 更新到Flash player15.0 及Air 更新方法
    As3.0 Interface 与类的使用
  • 原文地址:https://www.cnblogs.com/xlzfdddd/p/10132723.html
Copyright © 2011-2022 走看看