MySQL undo日志

一、 undo 日志简介

undo log叫做回滚日志或撤销日志,在事务执行变更操作之前需要先将相反的操作写入undo log,通过它可以让事务回滚操作,undo log也是实现多版本控制(MVCC)的基础。

redo log保证了事务的持久性,而undo log保证了事务的原子性和一致性。
在这里插入图片描述undo日志是逻辑日志,undo日志再InnoDB使用回滚段 rollback segment,每个回滚段记录了1024哥undo log segment
如,用户执行了一个INSERT 10W条记录的事务,这个事务会导致表空间增大,执行ROLLBACK时,会将插入的事务进行回滚,但是表空间并不会缩小。当InnoDB存储引擎回滚时,它实际做的是与之前相反的操作,对于每一个delete ,回滚,InnoDB会执行一个INSERT,对于每一个UPDATE,InnoDB存储引擎会执行一个相反的UPDATE

二、undo日志作用

回滚数据: undo log记录了每个操作的逆操作,可以逻辑恢复数据(注意:类似git 操作,不是物理上的恢复,既数据结构和页可能变化了);
MVCC: 在InnoDB中MVCC的实现是通过undo log来完成。当用户读取一行记录时,若该记录已经被其他事务占用,当前事务可以通过undo log读取之前的行版本信息,以此实现非锁定读取。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值