01 一条SQL查询语句的执行过程

【极客时间课程笔记,图非原创】

MySQL逻辑框架

  1. server层:如图,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等
  2. 存储引擎层:负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MySIAM、Memory等多个存储引擎。最常用的是InnoDB(从5.5.5版开始成为默认)。
MySQL逻辑框架

【长连接 vs 短连接】

  • 长连接:连接成功后,如果客户端持续有请求,则一直使用同一个连接
  • 短连接:每次执行完很少的几次查询就断开连接,下次查询再建立一个

【tips】

  • 建立连接的过程比较复杂,建议减少建立连接的动作。
  • 但是使用长连接占内存很快,因为mysql再执行过程中临时使用的内存是管理再连接对象里的,这些资源在断开连接的时候才释放。解决办法:(1)定期断开长连接;(2)mysql5.7版本支持mysql_reset_connection来重新初始化连接资源

分析器

词法分析 - > 语法分析

优化器

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

执行器

MySQL通过分析器知道了你要做什么,通过优化器知道了该怎么做,于是进入执行器执行。

select * from T where ID=10;
  1. 首先判断对表T有没有执行权限,如果有进入2
  2. 调用InnoDB引擎接口取表的第一行,判断condition,如果是则存入结果集,不是就跳过。-> step 3;
  3. 调用引擎接口取“下一行”,重复condition判断,直到取到最后一行;
  4. 结果集返回给客户端

你可能感兴趣的:(01 一条SQL查询语句的执行过程)