所谓运行机制即MySQL内部就如生产车间如何进行生产的。如下图:

    

  1、建立连接,通过客户端/服务器通信协议与MySQL建立连接。MySQL客户端与服务端的通信方式是"半双工"。对于每一个MySQL的连接,时刻都有一个线程状态来标识这个连接正在做什么。

    通信机制:

      

    线程状态:

      show processlist;//查看用户正在运行的线程信息,root用户能查看所有线程,其他用户只能查看自己的。

      

  2、查询缓存:MySQL的一个可优化查询的地方,如果开启了查询缓存且在查询缓存过程中查询到完全相同的SQL语句,则将查询结果直接返回给客户端;如果没有开启查询缓存或者没有查询到完全相同的SQL语句则会由解析器进行语法语义解析并生成“解析树”。

    

  3、解析器将客户端发送的SQL进行语法解析,生成“解析树”。预处理器根据一些MySQL规则进一步检查“解析树”是否合法,例如这里将检查数据表和数据列是否存在,还会解析名字和别名,看看它们是否有歧义,最后生成新的“解析树”。

  4、查询优化器,根据“解析树”生成最优的执行计划。MySQL使用很多优化策略生成最优的执行计划,可以分为两类:静态优化(编译时优化)、动态优化(运行时优化)。

    

  5、查询执行引擎负责执行SQL语句,此时查询执行引擎会根据SQL语句中标的存储引擎类型,以及对于的API接口与底层存储引擎缓存或者物理文件的交互得到查询结果并返回给客户端。若开启查询缓存,这时会将SQL语句和结果完成地保存到查询缓存中,以后若有相同的SQL语句执行则直接返回结果。

    

最新文章

  1. 解密jQuery内核 DOM操作
  2. 初探canvas
  3. 移动web中一些问题处理与事件说明
  4. Mac 下 Intellij IDEA 2016.1.2+maven+jetty+ JRebel 6.4.3 破解+spring mvc
  5. SQL SERVER 2008 R2配置管理器出现“远程过程调用失败”【0x800706be】的解决办法
  6. mysql笔记04 MySQL高级特性
  7. Collection集合List、Set
  8. Android开发之少去踩坑,多走捷径【转】
  9. Compass被墙后如何安装安装
  10. 自定义 Preference Header 布局
  11. 网络版shell之网络编程练习篇--telnet服务端
  12. [SDOI2015]星际战争
  13. laravel-重定向携带自定义消息
  14. VS2017 带参数启动调式程序
  15. linux中mariadb的安装
  16. node 报错:Uncaught Error: Cannot find module "!!../../../node_modules/extract-webpack-plugin/loader.js
  17. 【GRPC】GRPC-负载均衡
  18. centos中YUM安装后文件的常见路径
  19. 牛客练习赛23 F 托米的游戏
  20. struts中action名称反复导致的神秘事件

热门文章

  1. prtotype原型对象
  2. 【机器学习】GMM和EM算法
  3. zookeeper,kafka,redis等分布式框架的主从同步策略
  4. zabbix_proxy3.4安装
  5. 『无为则无心』Python函数 — 35、Python中的闭包
  6. lsof恢复误删文件
  7. Redis 源码简洁剖析 04 - Sorted Set 有序集合
  8. 检测当前编译器支持c++版本
  9. C++ 子函数参数传递过程
  10. Spring源码-AOP部分-Spring是如何对bean实现AOP代理的