zoukankan      html  css  js  c++  java
  • 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语句的语法规则。

    优化器

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

    执行器

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

  • 相关阅读:
    sftp服务器搭建以及挂载新硬盘到home目录下
    做题小技巧
    18年2月份股市大跌感想
    使用docker配置laravel5.5环境
    git tag、gitignore和git撤销提交
    Tmux 学习
    rman异常案例二: 归档日志被人移动到其他目录,导致数据库恢复异常(续)
    tasklet与workqueue的区别和不同应用环境总结
    [置顶] Jquery网页打印
    svn服务器搭建和使用:Custom action GenerateSSLKey failed: Command terminated with non-zero exit code
  • 原文地址:https://www.cnblogs.com/dloooooo/p/13739933.html
Copyright © 2011-2022 走看看