310 字
2 分钟
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日志条目来进行数据复原。