MySQ体系结构

MySQL知识总结之MySQ体系结构

1.MySQ体系结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L334X3kh-1653895561431)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220529121348990.png)]

2.连接层

接受客户端的连接、连接最大数量、验证账户密码、不同的客户端具有的权限(可以操作哪些数据、哪些表);
连接层是MySQL体系架构的最上层,它可其他client-server架构一样,主要包含如下内容:
连接处理
用户鉴权
安全管理
1.连接处理:当一个客户端向服务端发送连接请求后,MySQL server会从线程池中分配一个线程来和客户端进行连接,以后该客户端的请求都会被分配到该线程上。MySQL Server为了提高性能,提供了线程池,减少了创建线程和释放线程所花费的时间。
2.用户鉴权:当客户端向MySQL服务端发起连接请求后,MySQL server会对发起连接的用户进行鉴权处理,MySQL鉴权依据是: 用户名,客户端主机地址和用户密码
3.安全管理:当客户连接到MySQL server后,MySQL server会根据用户的权限来判断用户具体可执行哪些操作。MySQL 提供的部分权限的如下:

最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于ssL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

2.1MySQL连接器

MySQL 连接器:
1.首先需要在 MySQL 客户端登陆才能使用,所以需要 个连接器 来连接用户和MySQL 数据库,我们 一般是使用
mysql-u 用户名-p 密码来进行 MySQL 登陆,和服务端建立连接。
2.在完成 TCP 握手后,连接器会根据你输入的用户名和密码验证你的登录身份:
如果用户名或者密码错误,MySQL 就会提示 Access denied for user,来结束执行;
如果登录成功后,MySQL 会根据权限表中的记录来判定你的权限

3.服务层

3.1服务层介绍

绝大部分的核心功能都是在服务层完成的;
所有的跨存储引擎都是在这一层完成的:比如DML语句、DDL语句的封装
该层是MySQL Server的核心层,提供了MySQL Server数据库系统的所有逻辑功能,该层可以分为如下不同的组件:
MySQL Management Server & utilities(系统管理)
SQL Interface(SQL 接口)
SQL Parser(SQL 解析器)
Optimizer (查询优化器)
Caches & buffers(缓存)
1.MySQL Management Server & utilities(系统管理) 提供了丰富的数据库管理功能,具体如下:
数据库备份和恢复
数据库安全管理,如用户及权限管理
数据库复制管理
数据库集群管理
数据库分区,分库,分表管理
数据库元数据管理
2.SQL Interface(SQL 接口) SQL接口,接收用户的SQL命令并进行处理,得到用户所需要的结果,具体处理功能如下:
Data Manipulation Language (DML).
Data Definition Language (DDL).
存储过程
视图
触发器
3.SQL Parser(SQL 解析器) 解析器的作用主要是解析查询语句,最终生成语法树。首先解析器会对查询语句进行语法分析,如果语句语法有错误,则返回相应的错误信息。语法检查通过后,解析器会查询缓存,如果缓存中有对应的语句,就直接返回结果不进行接下来的优化执行操作。
注:读者会疑问,从缓存中查出来的数据会不会被修改,与真实的数据不一致,这里读者大可放心,因为缓存中数据被修改,会被清出缓存。
4.Optimizer(查询优化器) 优化器的作用主要是对查询语句进行优化,包括选择合适的索引,数据的读取方式。
5.Caches & buffers(缓存) 包括全局和引擎特定的缓存,提高查询的效率。如果查询缓存中有命中的查询结果,则查询语句就可以从缓存中取数据,无须再通过解析和执行。这个缓存机制是由一系列小缓存组成,如表缓存、记录缓存、key缓存、权限缓存等。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eO9CPBYW-1653895561433)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220530151111476.png)]

3.2MySQL 查询缓存

mysql-u 用户名-p 密码连接完成后,来进行 MySQL 登陆,和服务端建立连接,你就可以执行 SQL 语句了,这行逻辑就会来到第二步:查询缓存。MySQL 在得到一个执行请求后,会首先去查询缓存 中查找,是否执行过这条SQL 语句,之前执行过的语句以及结果会以 key-value 对的形式,被直接放在内存中。key 是查询语句,value 是查询的结果。如果通过 key 能够查找到这条 SQL 语句,就直接妾返回 SQL 的

3.3MySQL分析器

如果没有命中查询,就开始执行真正的 SQL 语句。
*首先,MySQL 会根据你写的 SQL 语句进行解析,分析器会先做词法分析,你写的 SQL 就是由多个字符串和空格组成的一条 SQL 语句,MySQL 需要识别出里面的字符串是什么,代表什么
*然后进行语法分析,根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个 SQL 语句是否满足 MySQL 语法。如果 SQL 语句不正确,就会提示 You have an error in your SQL syntax

3.4MySQL优化器

经过分析器的词法分析和语法分析后,你这条 SQL 就合法了,MySQL 就知道你要做什么了。但是在执行前,还需要进行优化器的处理,优化器会判断你使用了哪种索引,使用了何种连接,优化器的作用就是确定效率最高的执行方案

3.5MySQL执行器

MySQL 通过分析器知道了你的 SQL 语句是否合法,你想要做什么操作,通过优化器知道了该怎么做效率最高,然后就进入了执行阶段,开始执行这条 SQL 语句在执行阶段,MySQL 首先会判断你有没有执行这条语句的权限,没有权限的
话,就会返回没有权限的错误。如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口。对于有索引的表,执行的逻辑也差不多

4.存储引擎层

MySQ里提供了很多可供我们使用的引擎,甚至我们还可以进行导入输出、所以是可插拔式存储引擎;
注意:index索引是在存储引擎实现的,也就意味着不同的存储引擎的index索引是不一样的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UzCADc8o-1653895561433)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220530152449597.png)]

5.存储层

存储引擎存储控制的是数据库的数据该如何来存储、如何来取、如何来进行组织,但是具体的数据库的数据是存储在磁盘当中的,即存储层主要是来存储数据的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dq8Jp4yo-1653895561433)(C:/Users/86158/AppData/Roaming/Typora/typora-user-images/image-20220530152539260.png)]

猜你喜欢

转载自blog.csdn.net/qq_53267860/article/details/125047437