如何解析MySQL的整体架构

发布时间:2021-10-25 09:12:08 作者:柒染
来源:亿速云 阅读:162

本篇文章给大家分享的是有关如何解析MySQL的整体架构,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

整体架构图

我们先看一下MySQL的架构图,对其先有一个整体的了解。MySQL主要分为四层架构,分别是网络连接层,服务层,存储引擎层,物理层。我们平常写的SQL语句,以及对SQL语句的优化都在服务层,他其实就是遵循一定的原则使得SQL语句能够按我们的预期效果执行。

如何解析MySQL的整体架构

网络连接层

主要负责连接管理,授权认证,安全等。每个客户端连接都对应着服务器上的一个线程。服务器上维护一个线程池,避免为每个连接创建和销毁线程。当客户端连接到MySQL服务器时,服务器对其进行认证。可以通过用户名与密码认证,也可以通过SSL证书进行认证。登录认证后,服务器还会验证客户端是否有执行某个查询的操作权限。这一层并不是MySQL所特有的技术。

服务层

该层是MySQL的核心,包括查询缓存,解析器,解析树,预处理器,查询优化器。

如何解析MySQL的整体架构

在正式查询之前,服务器会检查查询缓存,如果能找到对应的查询,则不必进行查询解析,优化,执行等过程,直接返回缓存中的结果集。

MySQL的解析器会根据查询语句,构造出一个解析树,主要用于根据语法规则来验证语句是否正确,比如SQL的关键字是否正确,关键字的顺序是否正确。

而预处理器主要是进一步校验,比如表名,字段名是否正确等。

查询优化器将解析树转化为查询计划,一般情况下,一条查询可以有很多种执行方式,最终返回相同的结果,优化器就是找到这其中最优的执行计划

在完成解析和优化阶段后,MySQL根据相应的执行计划去调用存储引擎层提供的相应接口来获取结果。

存储引擎层

负责MySQL数据的存储和提取,是通过提供一系列的接口来屏蔽不同引擎之间的差异。

注意:存储引擎是针对表的,而不是针对库。也就是说同一个库里面的不同表可以拥有不同的存储引擎。

常见的存储引擎有两种,MyISAM和InnoDB,下面我们来看下他们的区别。

首先,我们先创建一个存储引擎为MyISAM的test1表。

create table test1(
a INTEGER,
b varchar(10)
)ENGINE=MyISAM;

我们可以去MySQL的相关目录看一下他实际存储的内容,发现他对应着三个文件。

如何解析MySQL的整体架构

其次,我们再创建一个存储引擎为InnoDB的test2表。

create table test2(
a INTEGER,
b varchar(10)
)ENGINE=INNODB;

我们再去看一下他实际存储的内容,发现他对应这一个文件。

如何解析MySQL的整体架构

那么问题就来了,他的数据文件和索引文件存放在哪里啦。这边先留个问题,下下篇"文件"再说。

物理

将数据存放在硬盘上。

如何解析MySQL的整体架构

整体流程

我们发送一条SQL语句,其在MySQL中的整体流程究竟是什么样的?

以上就是如何解析MySQL的整体架构,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. Theia整体架构介绍
  2. MyBatis整体架构

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:怎么用Python让图片人物动起来

下一篇:Python爬虫经常会被封的原因是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》