当前位置:网站首页>你了解MySQL都包含哪些“零件“吗?
你了解MySQL都包含哪些“零件“吗?
2022-07-26 06:50:00 【亾亾亾湜鉄】
老师说:
作为一个后端开发,MySQL是我们常用的技术之一,也是面试中的高频面试题,那么你了解MySQL的基本架构吗?知道MySQL包含的各个"零件"和他们的作用吗?
下面我们就来聊一聊MySQL的架构。
一张鸟瞰图,先让大家有个基础的认识
是的没毛病,从上面的 MySQL 的逻辑架构图 中我们不难看出我们熟悉的MySQL可以分为Server 层和存储引擎层两部分。
而Server层中也是包含最多,最重要的部分,它包括连接器、查询缓存、分析器、优化器、执行器等等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学函数等),所有跨存储引擎的功能都在这一层实现,比如 存储过程、触发器、视图 等。
从上面这些信息相信大家也都能体会到Server层的重要性,而存储引擎层主要负责我们数据的存储和提取。我们也都知道MySQL支持很多存储引擎,可见其架构模式是插件式的,我们最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。
也就是说当你创建一张表并且没有指定存储引擎的时候,它就会默认使用InnoDB,当然你也可以指定你想要的存储引擎,下面的代码块中我已经给各位观众老爷准备好了,大家按需获取
create table 表明(
字段
...
)engine=存储引擎;
从我们上面的架构图也可以看出,不同的存储引擎对应了同一个Server层。
下面我们就一一的看看这些 ‘‘零件’’
连接器
首先我们需要连接到数据库,这个时候接待我们的就是连接器,它负责创建数据库连接
连接命令一般是这么写的:
mysql -h$ip -P$port -u$user -p
连接命令中的 mysql 是客户端工具,用来跟服务端建立连接。在完成经典的 TCP 握手后,连接器就要开始认证你的身份,这个时候用的就是你输入的用户名和密码。
后面就和我们登陆系统一样,如果账户密码不正确会提醒:"Access denied for user"的错误,账户密码都正确会在权限表中校验你所拥有的权限,你就可以开始操作了。
查询缓存
连接建立完成后,你就可以执行 select 语句了。执行逻辑就会来到第二步:查询缓存。
MySQL 拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。之前执行过的语句及其结果可能会以 key-value 对的形式,被直接缓存在内存中。key 是查询的语句,value 是查询的结果。如果你的查询能够直接在这个缓存中找到 key,那么这个 value 就会被直接返回给客户端。
但是这里的要求是十分严格的,而且它并不是那么的好用,我们也要注意,MySQL 8.0 版本直接将查询缓存的整块功能删掉了,也就是说 8.0 开始彻底没有这个功能了。
这里给大家提供一个显式指定使用查询缓存的语句
select SQL_CACHE * from Team where ID=10;
分析器
如果没有命中查询缓存,就要开始真正执行语句了。首先,MySQL 需要知道你要做什么,因此需要对 SQL 语句做解析。
分析器会对我们的SQL语句进行 “词法分析” ,也就是搞懂我们的SQL里面的字符串分别是什么,代表什么。
接下来还需要进行 “语法分析”,语法分析器会根据语法规则,判断你输入的这个 SQL 语句是否满足 MySQL 语法。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near ...
当我们看到什么的报错时就需要考虑自己的SQL语句有什么问题了
优化器
经过了分析器,MySQL 就知道你要做什么了。在开始执行之前,还要先经过优化器的处理。
优化器是在表里面有多个索引的时候,决定使用哪个索引;有多个where条件的时候,先执行那个条件;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序等等。优化器会对我们的SQL语句进行优化,让它执行的更快,优化器阶段完成后,这个语句的执行方案就确定下来了,然后进入执行器阶段。
执行器
MySQL 通过分析器知道了你要做什么,通过优化器知道了该怎么做,于是就进入了执行器阶段,开始执行语句。
开始执行的时候,要先判断一下你对这个表 T 有没有执行查询的权限,如果没有,就会返回没有权限的错误,如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口。
比如我们上面SQL中的表 Team 中,ID 字段没有索引,那么执行器的执行流程是这样的:
调用 InnoDB 引擎接口取这个表的第一行,判断 ID 值是不是 10,如果不是则跳过,如果是则将这行存在结果集中;
调用引擎接口取“下一行”,重复相同的判断逻辑,直到取到这个表的最后一行。
执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端。
至此,我们就把MySQL的所有 “零件” 都介绍了完了。
在你阅读完这篇文章时不难发现,我们给的图中已经将最重要的内容精简概况了,各位观众老爷可以直接拿图即可。
======================== 再次感谢大家的观看 ========================
边栏推荐
- Force buckle - 3. Longest substring without repeated characters
- [hard ten treasures] - 7.2 [dynamic RAM] analysis of the difference between DDR4 and DDR3
- MySQL Foundation (II) -- MySQL Foundation
- 【Star项目】小帽飞机大战(三)
- "Final review" 16/32-bit microprocessor (8086) basic register
- IV Actual combat - global unified return result class
- Merge_sort
- Introduce you to JVM from architecture
- 123123123
- 打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回
猜你喜欢

How does the seckill system ensure that the database does not crash and prevent oversold goods

Torth file read vulnerability (cnvd-2020-27769)

MySQL Foundation (II) -- MySQL Foundation

归并排序(merge_sort)

力扣——4. 寻找两个正序数组的中位数

Do you think you are a reliable test / development programmer? "Back to the pot"? Surface and reality

快速排序(quick-sort)

buuReserve(4)

How to solve the crash when the easygbs platform edits the device management group?

Proxyman, a native high-performance packet capturing tool, is for you who love learning
随机推荐
XSS-labs(1-10)闯关详解
Downloadutilse tool class without error
Which "digital currencies" can survive this winter? 2020-03-30
Summarize and learn STM32 to create project template
Log rotation logrotate
"Niuke | daily question" inverse Polish expression
曲线曲率展示
【硬十宝典】——7.1【动态RAM】DDR硬件设计要点
28. Implement strstr() implement strstr()
【图像隐藏】基于混合 DWT-HD-SVD 的数字图像水印方法技术附matlab代码
『牛客|每日一题』有效括号序列
力扣——3. 无重复字符的最长子串
信号处理系统综合设计-求解器函数的设计(连续和离散时间系统)
[graduation season _ advanced technology Er] farewell to yourself who has been confused for the past two years. Regroup, junior I'm coming
[image denoising] image denoising based on bicube interpolation and sparse representation matlab source code
PMP customs formula, don't hurry to recite it
[Star Project] small hat aircraft War (II)
[image hiding] digital image watermarking method technology based on hybrid dwt-hd-svd with matlab code
The results of the soft test can be checked, and the entry to query the results of the soft test has been opened in the first half of 2022
How to open an account online for Guohai Securities? Is it safe to open an account