• MySQL实战45讲(From 极客时间)学习笔记(1)


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

      本节课内容其实较为简单,最主要的是想为学习者建立一个流程图的概念,即一条sql查询语句执行时的整个流程。

      大体上,mysql的整体架构可分为Server层和存储引擎层。Server层主要包括:连接器、查询缓存、分析器、优化器和执行器以及各种内置函数。存储引擎层则包括:各种底层的存储引擎(如innodb)。

    连接器  

      用户使用客户端登录mysql时,通过连接器与mysql进行连接。连接器负责跟客户端建立连接、获取权限、维持和管理连接。当客户端连接上后在wait_timeout的时间内没有任何反应,则会自动断开连接,一般默认值为8小时。

      数据库里面,长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接。短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。建立连接时尽量使用长连接。但长连接常常伴随较大的内存占用。

      解决方案有:1、定期断开连接。即使用一段时间后,断开连接再重新连接。2、当执行完一个占内存较大的查询操作后,重新建立一次连接。

    查询缓存

      个人认为查询缓存与cache原理相仿,我把基于的原理概括为查询局部性。利用查询局部性,把一些查询语句存放于查询缓存中。当执行查询语句时,首先判断是否命中查询缓存中的语句。但使用查询语句的弊大于利:1、判断时需要语句完全对应相同,才判断命中,因此其判断的过程成本总是较高的。2、每当某表单被更新后,查询缓存中的相关语句将会被清空,使得查询的命中率会较低。而自mysql 8.0后,这个功能也被完全取消了。

    分析器

      分析器主要完成的是词法分析和语法分析的工作。词法分析完成的是判断该语句实际表达的任务是什么。语法分析负责的是判断该语句的语法是否符合SQL语句的语法规则。

    优化器

      优化器负责的是根据分析器得出的任务确定具体的执行方案。由于每个执行方案虽然得到结果相同,但执行效率却不尽相同。同时在表里存在多个索引时,优化器还需要决定选择哪个索引进行查询。

    执行器

      经过上述的各个阶段后,终于到了执行器的工作。顾名思义,执行器的任务就是根据优化器得到的执行方案进行执行操作。首先需要判断该用户是否有查询操作的权限,然后再在表单里进行查询并返回结果。

  • 相关阅读:
    SqlServer 查看数据库中所有存储过程
    SqlServer 查看数据库中所有视图
    SqlServer 查询表的详细信息
    SqlServer 遍历修改字段长度
    net core 操作Redis
    Tuning SharePoint Workflow Engine
    Open With Explorer
    Download language packs for SharePoint 2013
    Change Maximum Size For SharePoint List Template when Saving
    Six ways to store settings in SharePoint
  • 原文地址:https://www.cnblogs.com/dloooooo/p/13739933.html
Copyright © 2020-2023  润新知