mysql日志,redo log 和 undo log

InnoDB的事务日志包括redo log和undo log。

redo log

  redo log是重做日志,用来保障已提交事务的ACID特性。

  redo log 通常是物理日志(磁盘),记录的是数据页的物理修改,而不是某一行或某几行修改。它用来恢复提交后的物理数据页。

  redo log的作用

    数据库事务提交后,必须将更新后的数据刷到磁盘上,以保证ACID特性。可以将修改行先写到redo log里,再定期将数据刷到磁盘上,这样可以极大地提高性能。假如数据库崩溃,数据库重启后,会重做redo日志里的内容,以保证已提交的事务对数据产生的影响都刷到磁盘上。

undo log

  undo log 用来回滚行记录到某个版本。一般是逻辑日志,根据每行记录进行记录。

  undo log 的作用

    数据库事务未提交时,会将事务修改数据的镜像存放到undo日志里,当事务回滚时,或者数据库奔溃时,可以利用undo日志,撤销未提交事务对数据库产生的影响。

以上参考:https://mp.weixin.qq.com/s/JLV8GEcF1z4D8oiDhFo6-g、https://mp.weixin.qq.com/s/fmzaIobOihKKZ7kyZQInTg

原文地址:https://www.cnblogs.com/smallzhen/p/14540179.html