【黄啊码】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 种是最常见不过的了吧,但如果想进大厂,后边这三种也必须了解和学会,不然你依旧是个小小白。
好了,今天的课程就到这里,下期我们继续,敬请期待。
我是黄啊码,码字的码,退。。。退。。。退。。。朝!
版权声明: 本文为 InfoQ 作者【黄啊码】的原创文章。
原文链接:【http://xie.infoq.cn/article/8b2511201335cb4c886752f1e】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论