mysql:redo log和undo log

介绍

对数据库进行 增删改 时,会先产生 redo log ,然后产生 undo log

redo log(重做日志)

redo log 属于 innodb 存储引擎层

当事务提交(commit)时,先将事务写入到 redo log

在服务器宕机丢失数据时,可以通过 redo log恢复数据

作用

  • 保证事务的持久性
  • 为了在数据库异常宕机重启后,能恢复到宕机前的运行状态
  • 为了比较redo log中的checkpoint来刷脏

特点

  • 顺序写
  • 数据库运行时不需要对 redo log 进行读取操作

undo log(回滚日志)

undo log 属于innodb存储引擎层

作用

  • 事务回滚:InnoDB存储引擎回滚时,对于每个INSERT,会完成一个DELETE;
    对于每个DELETE,会执行一个INSERT;
    对于每个UPDATE,会执行一个相反的UPDATE,将修改前的行放回去。

  • MVCC(多个行版本控制):当用户读取一行记录时,若该记录已经被其他事务占用,当前事务可以通过undo log读取之前的行版本信息,以此实现一致性非锁定读取

特点

  • undo log 是需要进行随机读写的
  • undo log 会产生 redo log,因为 undo log 也需要持久性的保护

感谢:
https://blog.csdn.net/weixin_39841589/article/details/109460683

https://blog.csdn.net/wangdamingll/article/details/107821693

https://www.jb51.net/article/202911.htm


原文出处:/show_1IXqdZ0cW6L.html