美文网首页
01笔记 | 基础架构:一条SQL查询语句是如何执行的?

01笔记 | 基础架构:一条SQL查询语句是如何执行的?

作者: 大豆田 | 来源:发表于2022-02-28 19:35 被阅读0次

    MySQL基本架构示意图

    image.png

    大体来说,MySQL可以分为Server层和存储引擎层两部分

    连接器

    连接完成后,如果没有后续动作,这个连接就处于空闲状态,可以使用show processlist命令查看。


    image.png

    若客户端太长时间没有动静,连接器就会自动断开。这个时间由参数wait_tiemout控制,默认是8小时。
    建立连接的过程比较耗时,故尽量减少建立连接的动作,也就是尽量使用长链接。但有时候MySQL占用内存涨的特别快,这是因为MySQL在执行过程临时使用的内存是管理在连接对象里面的。这些资源会在连接断开的时候才释放。所以长连接积累下来,可能会导致内存占用太大,被系统强行杀掉OOM
    解决方案

    1. 定期断开连接,或执行过一个占用内存较大的查询后,断开连接重新连接
    2. MySQL5.7版本后,可以通过mysql_reset_connection重新初始化连接资源

    查询缓存

    大多数情况下,不建议使用查询缓存,原因是弊大于利
    查询缓存的失效非常频繁,只要对一个表有更新,缓存都会被清空,命中率非常低。8.0版本后已经删除这个功能里

    分析器

    如果没有命中缓存,就开始真正执行语句了。词法分析和语法分析就在这里完成

    优化器

    相关文章

      网友评论

          本文标题:01笔记 | 基础架构:一条SQL查询语句是如何执行的?

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