图解MySql体系架构

本文详细剖析了MySQL的体系架构,包括Server层和存储引擎层。Server层涵盖连接器、查询缓存、分析器、优化器和执行器的功能。连接器负责客户端连接,查询缓存存储已执行的SQL结果,分析器检查SQL语法,优化器选择最佳执行计划,执行器执行SQL并返回结果。存储引擎如InnoDB处理数据的存储和提取。此外,还讨论了查询缓存的适用场景和连接器的空闲超时设置。
摘要由CSDN通过智能技术生成

图解MySql体系架构


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


前言

仅作为笔记


一、总体架构

在这里插入图片描述

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

二、Server详细分析

2.1 连接器

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

mysql -h -p -u -p

注意:连接后如果不进行任何操作,这个连接会处于空闲状态,默认空闲状态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,这两个挺重要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值