加入收藏 | 设为首页 | 会员中心 | 我要投稿 海南站长网 (https://www.0898zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Mysql 整体架构概览

发布时间:2023-01-08 10:05:13 所属栏目:MsSql教程 来源:网络
导读:
mysql 整体架构
mysql 一共分为四层 分别是 网络层 服务层 存储引擎层 文件系统层 客户端 不属于 mysql_server 的范畴 它可以是各种变成语言 也可以是各种可视化工具 即一切能和 mysql se

mysql 整体架构

mysql 一共分为四层 分别是 网络层 服务层 存储引擎层 文件系统层 客户端 不属于 mysql_server 的范畴 它可以是各种变成语言 也可以是各种可视化工具 即一切能和 mysql server 连接成功的模块都为 客户端

一、网络层连接流程

clientserver发起tcp请求 三次握手建立session 连接查询用户 鉴权鉴权成功 授权连接建立成功clientserver

连接之后

mysql 会安排一条线程维护当前的客户端连接,这条线程表示这当前连接正在进行什么工作 可以通过 show processlist 来查看当前正在运行的所有线程 默认已半双工的通讯机制进行工作,此外还有全双工和单工机制

数据库连接池作用:

用于线程复用使用 因为创建线程对于操作系统来说是一笔很大的开销,限制线程最大连接数量,复用线程,管理线程等。

具体使用:

可以通过参数 max-connections 对线程的最大连接数量进行限制 ,合理的限制可以使 mysql 的性能最大化

主要命令:二、系统服务层

用于 mysql 的请求解析,语义分析,sql 优化,缓存以及存放内置函数,所有跨引擎(即所有搜索引擎都拥有的功能),在这一层实现,如存储过程,触发器mssql 完整外部连接,视图等一系列服务。 ![[Pasted image 20221009141926.png]]

2.1、SQL 接口组件

sql 接口组件会作为客户端传递 sql 的入口和出口 主要是对 sql 的类型进行划分和触发器

sql 类型触发器

触发器是不需要外部进行手动调用,而是 mysql 触发某个时间之后会自动将调用对应的触发器 类似 aop 切面

2.2、SQL 解析器

类似 jdk 编译器 会对 sql 进行解析 分析 sql 错误等

2.3、优化器

优化器会对 sql 进行优化 例如:选择合适的索引,选择合适的 join 方式等 优化完成以后 线程会调用存储引擎的 api 进行 sql 查询

2.4、缓存和缓冲

mysql 会对查询结果进行缓存,当下次查询结果相同的时候会直接在缓存中命中对应的查询结果,而不是直接走硬盘查询,效率更高!

使用方法(5.7 版本,高版本因为查询缓冲区(非缓冲区)命中不高已经移除)备注

缓冲区同时和存储引擎有关 不通的存储引擎有着不同的缓冲区 高版本移除了查询缓冲区 因为使用场景少 且更多是使用 redis 等手动缓存数据。但是并未移除缓冲区 存储引擎在查找的时候还是会先查找缓冲区的数据。

三、存储引擎层

负责具体的数据操作和 sql 执行工作

备注:

mysql 的存储引擎为热插拔式的 存在很多的存储引擎实现(被定义为一个一个接口) 常用的有:InnoDB 、MyISAM 可以通过 show variables like '%storage_engine%' 来查看当前使用的存储引擎 其他的闭源数据库大多只有厂家自己实现的闭源存储引擎

四、文件系统层

文件系统层本质上是计算机的一个文件系统 , 还有一些 数据库运行使用需要的关键文件,配置文件,表结构定义文件,索引文件和日志文件等。 与上层的操作引擎交互,负责数据的最后落盘(存储到磁盘上)

4.1、日志模块日志类型4.2、数据模块

数据模块即是 mysql 将我们的数据存放在具体的某种文件格式当中

类型五、客户层

一般情况下 客户层也会自己维护一个线程池 因为同数据库建立连接,销毁链接是很大的资源浪费,一般来说常见的编程语言都会自己创建维护数据库连接的线程池

客户端线程池同服务端线程池之间的区别

MySQL连接池维护的是工作线程,客户端连接池则维护的是网络连接。两者都是利用池化技术复用资源。

(编辑:海南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章