本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,mysql server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

推荐学习:mysql视频教程
MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。

服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分。
连接池(Connection Pool):负责存储和管理客户端与数据库的连接,一个线程负责管理一个连接。
系统管理和控制工具(Management Services & Utilities):例如备份恢复、安全管理、集群管理等
SQL接口(SQL Interface):用于接受客户端发送的各种SQL命令,并且返回用户需要查询的结果。比如DML、DDL、存储过程、视图、触发器等。
解析器(Parser):负责将请求的SQL解析生成一个"解析树"。然后根据一些MySQL规则进一步检查解析树是否合法。
查询优化器(Optimizer):当"解析树"通过解析器语法检查后,将交由优化器将其转化成执行计划,然后与存储引擎交互。
select uid, name from user where gender = 1;选取 --》投影 --》联接 策略select先根据where语句进行选取,并不是查询出全部数据再过滤;select查询根据uid和name进行属性投影,并不是取出所有字段;将前面选取和投影联接起来最终生成查询结果;
缓存(Cache&Buffer): 缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,权限缓存,引擎缓存等。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。
该层负责将数据库的数据和日志存储在文件系统之上,并完成与存储引擎的交互,是文件的物理存储层。主要包含日志文件,数据文件,配置文件,pid 文件,socket 文件等。

存储引擎在MySQL的体系架构中位于第三层,负责MySQL中的数据的存储和提取,是与文件打交道的子系统,它是根据MySQL提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎。
使用show engines命令,就可以查看当前数据库支持的引擎信息。
在5.5版本之前默认采用MyISAM存储引擎,从5.5开始采用InnoDB存储引擎。
从MySQL 5.5版本开始默认使用InnoDB作为引擎,它擅长处理事务,具有自动崩溃恢复的特性。下面是官方的InnoDB引擎架构图,主要分为内存结构和磁盘结构两大部分。

内存结构主要包括Buffer Pool、Change Buffer、Adaptive Hash Index和Log Buffer四大组件。
InnoDB磁盘主要包含Tablespaces,InnoDB Data Dictionary,Doublewrite Buffer、Redo Log和Undo Logs。
表空间(Tablespaces):用于存储表结构和数据。表空间又分为系统表空间、独立表空间、通用表空间、临时表空间、Undo表空间等多种类型;
系统表空间(The System Tablespace)
CREATE TABLESPACE ts1 ADD DATAFILE ts1.ibd Engine=InnoDB; //创建表空 间ts1 CREATE TABLE t1 (c1 INT PRIMARY KEY) TABLESPACE ts1; //将表添加到ts1 表空间
独立表空间(File-Per-Table Tablespaces)
通用表空间(General Tablespaces)
撤销表空间(Undo Tablespaces)
临时表空间(Temporary Tablespaces)
数据字典(InnoDB Data Dictionary)
双写缓冲区(Doublewrite Buffer)
重做日志(Redo Log)
撤销日志(Undo Logs)



InnoDB数据文件存储结构
Page是文件最基本的单位,无论何种类型的page,都是由page header,page trailer和page body组成。如下图所示

InnoDB文件存储格式
通过 SHOW TABLE STATUS 命令 查看

一般情况下,如果row_format为REDUNDANT、COMPACT,文件格式为Antelope;如果row_format为DYNAMIC和COMPRESSED,文件格式为Barracuda。
通过 information_schema 查看指定表的文件格式
select * from information_schema.innodb_sys_tables;
File文件格式(File-Format)
Row行格式(Row_format)

酷纬企业网站管理系统源码
酷纬企业网站管理系统是酷纬信息开发的为企业网站提供一揽子解决方案的营销型网站系统,后台采用PHP+Mysql架构,内置企业简介模块、新闻模块、产品模块、图片模块、下载模块、在线留言模块、常见问题模块、友情链接模块。前台采用DIV+CSS,遵循SEO标准,通过模板或者定制为企业提供专业的营销型网站。
95
查看详情
表的行格式决定了它的行是如何物理存储的,这反过来又会影响查询和DML操作的性能。如果在单个page页中容纳更多行,查询和索引查找可以更快地工作,缓冲池中所需的内存更少,写入更新时所需的I/O更少。
InnoDB存储引擎支持四种行格式:REDUNDANT、COMPACT、DYNAMIC和COMPRESSED。
DYNAMIC和COMPRESSED新格式引入的功能有:数据压缩、增强型长列数据的页外存储和大索引前缀。
每个表的数据分成若干页来存储,每个页中采用B树结构存储;
如果某些字段信息过长,无法存储在B树节点中,这时候会被单独分配空间,此时被称为溢出页,该字段被称为页外列。
在创建表和索引时,文件格式都被用于每个InnoDB表数据文件(其名称与*.ibd匹配)。修改文件格式的方法是重新创建表及其索引,最简单方法是对要修改的每个表使用以下命令:
ALTER TABLE 表名 ROW_FORMAT=格式类型;
Undo:意为撤销或取消,以撤销操作为目的,返回指定某个状态的操作。
Undo Log:数据库事务开始之前,会将要修改的记录存放到 Undo 日志里,当事务回滚时或者数据库崩溃时,可以利用 Undo 日志,撤销未提交事务对数据库产生的影响。
Undo Log产生和销毁:Undo Log在事务开始前产生;事务在提交时,并不会立刻删除undo log,innodb会将该事务对应的undo log放入到删除列表中,后面会通过后台线程purge thread进行回收处理。Undo Log属于逻辑日志,记录一个变化过程。例如执行一个delete,undolog会记录一个insert;执行一个update,undolog会记录一个相反的update。
Undo Log存储:undo log采用段的方式管理和记录。在innodb数据文件中包含一种rollback segment回滚段,内部包含1024个undo log segment。可以通过下面一组参数来控制Undo log存储。
#相关参数命令 show variables like '%innodb_undo%';
实现多版本并发控制(MVCC)
Undo Log 在 MySQL InnoDB 存储引擎中用来实现多版本并发控制。事务未提交之前,Undo Log保存了未提交之前的版本数据,Undo Log 中的数据可作为数据旧版本快照供其他并发事务进行快照读。

事务B手动开启事务,执行查询操作,会读取 Undo 日志数据返回,进行快照读;
Redo Log 和 Binlog
Redo Log 介绍
Redo Log工作原理

Redo Log写入机制
Redo Log 文件内容是以顺序循环的方式写入文件,写满时则回溯到第一个文件,进行覆盖写。

Redo Log相关配置参数
每个InnoDB存储引擎至少有1个重做日志文件组(group),每个文件组至少有2个重做日志文件,默认为ib_logfile0和ib_logfile1。可以通过下面一组参数控制Redo Log存储:
show variables like '%innodb_log%';
Redo Buffer 持久化到 Redo Log 的策略,可通过 Innodb_flush_log_at_trx_commit 设置:

Binlog 记录模式
Binlog 文件结构
Binlog文件中Log event结构如下图所示:

Binlog写入机制
Binlog文件操作
Binlog文件操作
Binlog状态查看
show variables like 'log_bin';
开启Binlog功能
set global log_bin = mysqllogbin; ERROR 1238 (HY000): Variable 'log_bin' is a read only variable
需要修改my.cnf或my.ini配置文件,在[mysqld]下面增加log_bin=mysql_bin_log,重启MySQL服务。
#log-bin=ON #log-bin-basename=mysqlbinlog binlog-format=ROW log-bin=mysqlbinlog
使用show binlog events命令
show binary logs; //等价于show master logs; show master status; show binlog events; show binlog events in 'mysqlbinlog.000001';
使用 mysqlbinlog 命令
mysqlbinlog "文件名" mysqlbinlog "文件名" > "test.sql"
使用 binlog 恢复数据
//按指定时间恢复 mysqlbinlog --start-datetime="2025-04-25 18:00:00" --stop- datetime="2025-04-26 00:00:00" mysqlbinlog.000002 | mysql -uroot -p1234 //按事件位置号恢复 mysqlbinlog --start-position=154 --stop-position=957 mysqlbinlog.000002 | mysql -uroot -p1234
mysqldump:定期全部备份数据库数据。mysqlbinlog可以做增量备份和恢复操作。
删除Binlog文件
purge binary logs to 'mysqlbinlog.000001'; //删除指定文件 purge binary logs before '2025-04-28 00:00:00'; //删除指定时间之前的文件 reset master; //清除所有文件
可以通过设置expire_logs_days参数来启动自动清理功能。默认值为0表示没启用。设置为1表示超出1天binlog文件会自动删除掉。
Redo Log和 Binlog区别
推荐学习:mysql视频教程
以上就是图文详解mysql架构原理的详细内容,更多请关注其它相关文章!
# 管理系统
# 金水区营销网站搭建优化
# 武清网站建设联系电话
# 新疆seo公司哪家好点
# 做SEO贵吗
# 改色膜的营销推广
# seo推广网站公司排名
# seo蜘蛛源码
# 网站推广公司流程模板
# 乌鲁木齐网站建设路烤肉
# 网站推广系统用优立推
# mysql
# 的是
# 自己的
# 重做
# 就会
# 两种
# 链表
# 镜像
# 客户端
# 多个
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
魔法祈幻界兑换码礼包大全
《友玩*》创建群聊方法
t3出行如何使用微信支付
海棠阅读网页版_进入海棠网页版在线阅读中心
如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战
易车网官网直达入口 易车网在线登录入口
《战地6》反作弊已成功拦截240万次作弊 发售第一周98%比赛没有作弊
Golang如何测试结构体方法_Golang reflect方法测试与调用技巧
《KARDS》冬季扩展包“国土阵线”上线!全新“协力”机制改变战场格局
京东物流快递破损了怎么办_京东快递破损理赔流程
C++ virtual析构函数作用_C++基类虚析构函数防止内存泄漏
Final Cut Pro视频加EQ教程
OPPO A3 WiFi频繁断开怎么办 OPPO A3网络优化技巧
sublime如何处理超大文件不卡顿 _sublime打开大日志文件技巧
在VS Code中进行数据科学和机器学习开发
VB表达式书写规则解析
word怎么将图片设置为页面背景并不影响打印_Word图片背景设置方法
《东方航空》添加乘机人方法
Word如何将文字快速转成表格 Word文本转换成表格功能使用技巧【效率】
《三角洲行动》战斗步枪与机枪类改装代码分享
获取WooCommerce产品在后台编辑页面的分类ID
CSS如何使用outline-offset与颜色组合突出元素边框
J*aScript大数运算_BigInt使用指南
Win10如何关闭开机锁屏界面_Windows10跳过锁屏直接登录设置
抖音火山版注销账号抖音会注销吗 抖音火山版与抖音账号注销关系
猫眼电影app怎么查询电影院的营业时间_猫眼电影影院营业时间查询教程
抖音怎么解除第三方绑定_抖音解除第三方平台绑定方法介绍
《我的恋爱逃生攻略》中文名字输入方法
XPath动态元素定位:如何精准选择文本内容变化的元素
如何在CSS中使用过渡制作按钮边框渐变_border-color transition实现
《大周列国志》皇帝律令功能介绍
Python中深度嵌套字典与列表的数据提取与条件过滤指南
Highcharts雷达图径向轴数值标签实现教程
百度输入法在AutoCAD中无法输入中文怎么办_百度输入法CAD输入异常解决方法
composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?
《偃武》甘宁技能详解
Win10运行窗口在哪里打开 Win10调出运行命令框快捷键【技巧】
Bootstrap 5导航栏折叠功能失效:数据属性迁移指南
百度网盘如何设置上传限额
win11如何开启单声道音频 Win11为听障用户合并左右声道【辅助】
《糖豆》添加舞曲方法
Win10通知横幅停留时间修改 Win10自定义通知显示时长【技巧】
windows10怎么设置电源按钮_windows10按下电源键功能修改
vivo云服务一直提示空间不足怎么办 怎么办vivo云服务老是提示空间不足
win11怎么设置默认终端为Windows Terminal Win11替代CMD和PowerShell【技巧】
PHP中动态类名访问的类实例类型提示与静态分析实践
植物大战僵尸95版游戏版下载_植物大战僵尸95版游戏版安装指南
大众点评了却看不到是怎么回事
Animex动漫社正版在线入口 Animex动漫社动漫官方观看网
《异星探险家》古怪的物品作用介绍
2022-05-17
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。