当前位置:   article > 正文

图解MySql体系架构_解析 mysql 登录的帧结构

解析 mysql 登录的帧结构

图解MySql体系架构


关于InnoDB书籍接近尾声,这是才慢慢发现并没有把体系架构弄明白,以及之前的文章中多次提到的Sever没弄得太明白是怎么回事。


前言

仅作为笔记


一、总体架构

在这里插入图片描述

  • 由上图可以看到,整个MySql可以分为上下两个部分,Server层和存储引擎层(默认使用得是InnoDB)。
  • Server层的主要作用:Server层包含了MySql的大多数核心的服务功能,以及所有的内置函数,这一层也是实现跨存储引擎的功能层,不同的存储引擎可以公用一个Server层
  • 存储引擎层的作用负责数据的存储和提取,其架构模式是插件时的(即插即用),支持InnoDB,MyISAM等,现在的MySql默认支持的是InnoDB。

二、Server详细分析

2.1 连接器

根据上图可以看到,连接器以客户端为输入端,输出端有分析器查询缓存,连接器负责跟客户端建立连接(使用的是TCP)、验证身份、获取权限、维持和管理连接,在交互式页面使用如下命令可以连接:

mysql -h -p -u -p
  • 1

注意:连接后如果不进行任何操作,这个连接会处于空闲状态,默认空闲状态8h自动退出,由 wait_timeout 控制的

2.2 查询缓存

连接器的输出端之一,在连接操作之后进行,在进行查询请求前会先到查询缓存看看,之前是不是执行过这条语句,执行过的语句及其结果可能会以 key-value 的形式被缓存在内存中, key 是查询的语句,value 是查询的结果,如果能够在缓存中找到key,则直接返回结果给客户端
注意:查询缓存以来的是缓存,而只要表有更新那么内存上的缓存页一定会更行,那么会导致依赖缓存的查询名字率降低,很影响系统性能。所以这个只适合在只使用查询功能的情况。

2.3 分析器

发生在没有命中到查询缓存之后。对 SQL 进行 “词法分析”和 “语法分析”,根据 “词法分析” 的结果,分析器会根据语法规则判断输入的 SQL 是否满足 MySQL 语法。如果存在语法错误,就会收到 ERROR 的提示信息,总之是一个检查SQL语句本身有没有语法错误的地方。

2.4 优化器

既然SQL语句本身没有错误,那么意味着可执行,优化器的功能就是在可执行的条件下找最好的执行方法(最快),比如表中有多个索引的时候,决定使用哪个索引,或者在一个语句中有多表关联时,决定各个表的执行顺序。总之优化器是给一句SQL语句选择最优执行方法的。

2.5 执行器

万事俱备只欠东风,最优方法也找好了那就是执行了。
执行器执行顺序:
1)调用存储引擎接口当前表的第一行,判断是否符合 SQL 中的条件判断,如果不是则跳过,如果是则加入到结果集中
2)再取下一行,重复步骤1)中的判断逻辑,直到遍历完整个表
3)执行器将上述遍历过程中查找符合条件的结果集返回给客户端

二 、存储引擎

也就是前几章的内容,常用的有InnoDB、MyISAM,这两个挺重要的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/826046
推荐阅读
相关标签
  

闽ICP备14008679号