MySQL架构原理之存储引擎InnoDB_Undo Log
2022/2/19 19:15:40
本文主要是介绍MySQL架构原理之存储引擎InnoDB_Undo Log,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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%';
以上对Undo Log进行了基本的介绍,下面介绍它为何存在,解决什么问题——即它的作用:
1、实现事务的原子性
Undo Log 是为了实现事务的原子性而出现的产物。事务处理过程中,如果出现了错误或者用户执行了 ROLLBACK 语句,MySQL 可以利用 Undo Log 中的备份将数据恢复到事务开始之前的状态。
2、实现多版本并发控制(MVCC)
Undo Log 在 MySQL InnoDB 存储引擎中用来实现多版本并发控制。事务未提交之前,Undo Log保存了未提交之前的版本数据,Undo Log 中的数据可作为数据旧版本快照供其他并发事务进行快照读。
1)事务A手动开启事务,执行更新操作,首先会把更新命中的数据备份到 Undo Buffer 中。
2)事务B手动开启事务,执行查询操作,会读取 Undo 日志数据返回,进行快照读
这篇关于MySQL架构原理之存储引擎InnoDB_Undo Log的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程
- 2024-11-19如何部署MySQL集群:新手入门教程
- 2024-11-19Mysql安装教程:新手必看的详细安装指南
- 2024-11-18Mysql安装入门:新手必读指南
- 2024-11-18MySQL事务MVCC原理入门详解