310 字
2 分钟
MySQL-undolog(回滚日志)
100%
上一章 · 22/23
MySQL-relaylog(中继日志)
下一章
已经读到最后一章
全部章节
- 1 MySQL共享锁和排他锁的区别
- 2 数据库ACID四大特性
- 3 MVCC-多版本并发控制
- 4 MySQL全局锁,表级锁,行级锁
- 5 MySQLbinlog,redolog和undolog
- 6 MySQL索引类型有哪些
- 7 MySQL-VARCHAR支持的最大长度
- 8 MySQL事务隔离级别
- 9 MySQL中的数据排序是怎么实现的
- 10 MySQL中几种count的区别
- 11 MySQL中CHAR和VARCHAR的区别
- 12 MySQL事务的两阶段提交是什么
- 13 MySQL中发生死锁如何解决
- 14 搭建MySQL主从服务器
- 15 如何处理MySQL的主从同步延迟
- 16 什么是MySQL的主从同步机制
- 17 MySQL中如何解决深度分页问题
- 18 分库分表场景
- 19 MySQL联合索引失效情况
- 20 MySQL-binlog
- 21 MySQL-redolog
- 22 MySQL-relaylog(中继日志)
- 23 MySQL-undolog(回滚日志) 阅读中

回滚日志 Undo Log
回滚日志是数据库引擎层生成的一种日志,主要用于确保事务的ACID特性中的原子性。它记录的是逻辑操作,也就是数据在被修改之前的状态。
这些逻辑操作包括 插入,删除和更新
主要功能
- 事务回滚: 当事务需要回滚的时候,通过执行undo log记录的逆向操作来恢复到事务开始前的数据状态
- 多版本并发控制 MVCC: 结合ReadView机制,利用undo log实现多版本并发控制,从而支持高并发读写操作
记录内容


事务回滚
每条记录在进行更新操作的时候,产生的undo日志都包含一个roll_pointer指针和一个trx_id事务标识符。
- trx_id用于识别对特定记录执行修改的操作的具体事务
- roll_pointer 则允许把一系列相关的undolog日志链接起来形成所谓的版本链

当某一个事务需要回滚的时候,并不是通过逆向执行SQL语句来恢复数据状态的,而是依据事务中roll_pointer指向的undolog日志条目来进行数据复原。

发现错误或想要改进这篇文章?
在 GitHub 上编辑此页 MySQL-undolog(回滚日志)
相关文章
按系列 / 标签 / 分类推荐