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

举报
黄啊码 发表于 2022/07/16 11:53:57 2022/07/16
【摘要】 大家好!我是黄啊码,鉴于大家对于学习的热情,从今天起,将连载mysql的相关知识,需要学习的可以注意我的更新学习,后期估计会开启付费专栏,但当前完全可以白嫖,希望大家珍惜!首先我们来看一张图:我们所看到的的MySQL是由三个层组成的,分别如下:连接层:负责客户端和服务器端建立连接,客户端发送 SQL 至服务器端,简单来说就是交互SQL 层:对 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种是最常见不过的了吧,但如果想进大厂,后边这三种也必须了解和学会,不然你依旧是个小小白。

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

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

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。