美文网首页
01 一条SQL查询语句的执行过程

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

作者: Wy_75ed | 来源:发表于2018-11-17 21:25 被阅读0次

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

    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查询语句的执行过程

          本文链接:https://www.haomeiwen.com/subject/aqiifqtx.html