执行过程

  • 连接器 - 管理连接,权限验证
  • 查询缓存 - 命中缓存直接返回结果
  • 分析器 - 词法分析 ,语法分析
  • 优化器 - 分析执行计划,选择最优的执行计划
  • 执行器 - 操作存储引擎接口,返回结果

不同的存储引擎共用一个Server层

连接器

连接器负责跟客户端建立连接、获取权限、维持和管理连接

客户端如果太长时间没动静,连接器就会自动将它断开。这个时间是由参数wait_timeout控制。

连接断开后,继续需要重连才能执行客户请求。

通常数据库连接推荐使用长连接。

查询缓存

  • 拿到一个查询请求后,会先到查询缓存看看,之前是否执行过这条语句。
  • 语句不在查询缓存中,就会继续后面的查询阶段。
  • 执行完成后,执行结果会被存入查询缓存中。

查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。

对于更新压力大的数据库来说,查询缓存的命中率会非常低.

8.0开始彻底没有这个功能了

分析器

对SQL语句做解析

  • 先做词法分析。分析字符串分别是什么,代表什么。
  • 语法分析,根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个SQL语句是否满足MySQL语法。

优化器

优化器的作用就是决定选择使用哪一个方案执行的效率更高。

比如:

  • 表里面有多个索引的时候,决定使用哪个索引。
  • 或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序

优化器阶段完成后,这个语句的执行方案就确定下来了,然后进入执行器阶段。

执行器

通过优化器知道了该怎么做,于是就进入了执行器阶段。

打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口,进行。

慢查询日志中

rows_examined的字段,表示这个语句执行过程中扫描了多少行。

最新文章

  1. YbSoftwareFactory 代码生成插件【十三】:Web API 的安全性
  2. windows开关机时间记录
  3. android-WebView
  4. iOS -- AVAudioPlayer播放音乐
  5. [翻译]为你的服务器选择正确的.NET
  6. Digital Roots 分类: HDU 2015-06-19 22:56 13人阅读 评论(0) 收藏
  7. PF_RING安装
  8. C/C++中的拷贝构造函数和赋值构造函数
  9. Direct3D 2D文本绘制
  10. power designer 连接mysql提示“connection test failed”
  11. P1006 传纸条 (方格取数dp)
  12. BeanFactoryPostProcessor vs BeanPostProcessor
  13. 利用PHP脚本辅助MySQL数据库管理5-检查异常数据
  14. 用10分钟,搭建图像处理编程环境,0失败!(python语言,windows系统)
  15. Linux端口命令
  16. substitute 命令与 global 命令
  17. 01.ubuntu16.06编译安装Hi3518EV200 SDK
  18. C_point指针
  19. vue 实战报错解决方案
  20. 修改js confirm alert 提示框文字

热门文章

  1. P3329 [ZJOI2011]最小割
  2. Yarn报错:Could not find any valid local directory for nmPrivate/
  3. 转载:openmax bellagio
  4. redis的linux安装
  5. python之路模块简介及模块导入
  6. Codeforces Round #600 (Div. 2) D。 Harmonious Graph
  7. Codeforces Round #603 (Div. 2) C.Everyone is A Winner!
  8. SVN merge(合并) 时看不到以前的已经合并过的记录的标识
  9. Vue项目接入MQTT
  10. pycharm项目移植过程中遇到的问题