写点什么

【黄啊码】MySQL 入门—1、SQL 的执行流程

作者:黄啊码
  • 2022 年 8 月 04 日
  • 本文字数:1000 字

    阅读完需:约 3 分钟

【黄啊码】MySQL入门—1、SQL 的执行流程

大家好!我是黄啊码,鉴于大家对于学习的热情,从今天起,将连载mysql的相关知识,需要学习的可以注意我的更新学习,后期估计会开启付费专栏,但当前完全可以白嫖,希望大家珍惜!

首先我们来看一张图:

我们所看到的的 MySQL 是由三个层组成的,分别如下:

连接层:负责客户端和服务器端建立连接,客户端发送 SQL 至服务器端,简单来说就是交互

SQL 层:对 SQL 语句进行查询处理;

存储引擎层:与数据库文件打交道,负责数据的存储和读取,分别有磁盘、内存和网络。

我们再来看另外一张图,以下是 SQL 语句的执行流程:

简而言之就是一句话:SQL 语句→缓存查询→解析器→优化器→执行器。

缓存查询:该功能是 mysql8.0 之前的操作,缓存从字面意思就是从缓存能拿到就读取缓存,拿不到再进行查询,但现在已经有 redis 这类的缓存数据库了,而且数据库又是频繁写入的库,对于我们来说有点鸡肋,所以从 mysql8.0 之后,官方已经直接抛弃了。

解析器:相当于咱们英语中的翻译,具体有:语法分析、语义分析,毕竟我们写的东西机器是不懂的,得它们自己翻译成自己懂的东西。

优化器:选择最优的执行方案,从而提高执行效率,比如索引之类的。

执行器:字面意思就是执行我们所写的 sql 语句,当然前提是你当前用户具备了执行的权限。

而在存储引擎方面,MySQL 则有自己独到的存储引擎,常见的、常用的有 InnoDB 和 MyISAM,下面我具体列举一下:

InnoDB 存储引擎:它是 MySQL 5.5 版本之后默认的存储引擎,最大的特点是支持事务、行级锁定、外键约束等。

MyISAM 存储引擎:在 MySQL 5.5 版本之前是默认的存储引擎,不支持事务,也不支持外键,最大的特点是速度快,占用资源少。

Memory 存储引擎:使用系统内存作为存储介质,以便得到更快的响应速度。不过如果 mysqld 进程崩溃,则会导致所有的数据丢失,因此我们只有当数据是临时的情况下才使用 Memory 存储引擎。

NDB 存储引擎:也叫做 NDB Cluster 存储引擎,主要用于 MySQL Cluster 分布式集群环境,类似于 Oracle 的 RAC 集群

Archive 存储引擎:它有很好的压缩机制,用于文件归档,在请求写入时会进行压缩,所以也经常用来做仓库。

MySQL 更独到的是做到了按表来分配存储引擎,而不是按库,这是相对人性化的一点。

对于小企业来说,1、2 种是最常见不过的了吧,但如果想进大厂,后边这三种也必须了解和学会,不然你依旧是个小小白。

好了,今天的课程就到这里,下期我们继续,敬请期待。

我是黄啊码,码字的码,退。。。退。。。退。。。朝!

发布于: 刚刚阅读数: 6
用户头像

黄啊码

关注

还未添加个人签名 2022.01.17 加入

要给工作加点瓦,编程电脑找啊码。开发工程师兼产品狗一枚,不定时分享技术知识,让小白也学懂得代码。 技术风格:喜欢以幽默风趣的形式讲解技术知识

评论

发布
暂无评论
【黄啊码】MySQL入门—1、SQL 的执行流程_MySQL_黄啊码_InfoQ写作社区