四、逻辑架构

1. 逻辑架构剖析

1.1 服务器处理客户端请求

  • 首先 MySQL 是典型的 C/S 架构,即 Client/Server 架构,服务器端程序使用的 mysqld
  • 不论客户端进程和服务器进程是采用那种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)
    在这里插入图片描述

在这里插入图片描述

1.2 Connectors

  • Connectors,指的是不同语言中与SQL的交互。MySQL首先是一个网络程序,在TCP至上定义了自己的应用层协议。所以要使用MySQL,我们可以编写代码,根MySQL Server 建立TCP连接,之后按照其定义好的协议进行交互。或者比较方便的方法是调用SDK,比如Native C API、JDBC、PHP等各语言 MySQL Connector,或者通过ODBC。但通过SDK来访问MySQL,本质上还是在TCP连接上通过MySQL协议跟MySQl进行交互
  • 接下来的 MySQL Server 结构可分为如下的三层:`

1.3 第1层:连接层

在这里插入图片描述

1.4 第2层:服务层

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.5 第3层:引擎层

在这里插入图片描述

1.6 存储层

所有的数据,数据库、表的定义,表的每一行的内容,索引,都是存在 文件系统 上,以 文件 的方式存在的,并完成与存储引擎的交互。当然有些存储引擎比如InnoDB,也支持不使用文件系统直接管理裸设备,但现代文件系统的实现使得这样做没有必要了。在文件系统之下,可以使用本地磁盘,可以使用DAS、NAS、SAN等各种存储系统。

1.7 小结

在这里插入图片描述

2. SQL执行流程

2.1 MySQL 中的 SQL执行流程

在这里插入图片描述

MySQL的查询流程:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
经过解析器,MySQL就知道你要做什么了。在开始执行之前,还要经过优化器处理。一条查询可以有很多种执行方式,最后都返回相同的结果。优化器的作用就是找到这其中最好的执行计划
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.2 MySQL8中SQL执行原理

在这里插入图片描述

  1. 确认profiling 是否开启

在这里插入图片描述

mysql> select @@profiling; 
mysql> show variables like 'profiling';

在这里插入图片描述

  1. 多次执行相同SQL查询
    在这里插入图片描述

  2. 查看profiles
    查看当前会话所产生的所有 profiles:

mysql> show profiles; # 显示最近的几次查询

在这里插入图片描述

  1. 查看profile
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3 MySQL5.7中SQL执行原理

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

结论不言而喻。执行编号2时,比执行编号1时少了很多信息,从截图中可以看出查询语句直接从缓存中获取数据。

2.4 SQL语法顺序

在这里插入图片描述

3. 数据库缓冲池(buffer pool)

在这里插入图片描述

3.1 缓冲池 vs 查询缓存

缓冲池和查询缓存是一个东西吗?不是。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.2 缓冲池如何读取数据

在这里插入图片描述

在这里插入图片描述

3.3 查看/设置缓冲池的大小

在这里插入图片描述

在这里插入图片描述

3.4 多个Buffer Pool实例

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.5 引申问题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

答案:Redo Log & Undo Log

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ModelBulider

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值