undo log 为了回滚事务所设计的结构。
例如 一条insert 语句,会生成一个 delete的undo log。表明删除这个主键的数据。
redo log
为了防止脏数据(在buffer pool里面更新,但是没有写会硬盘的数据)设计的数据结构。
偏向物理性质的重做日志,记录了对哪个数据页进行了什么修改。
例如, 已经将id=1 的数据的name由原先的 a 改为b , 这时只是改了内存的数据页,还没有写回硬盘,数据库宕机了,但是这条更新记录,已经写入了redo log,重启后,就可以获取redo log,重新执行一次,即可恢复数据。
redo log 和 undo log都是属于InnoDB引擎设计的模块。
binlog
属于mysql的设计模块,偏向逻辑性的日志,例如“对user表中id=1的这行数据的age字段进行更新,更新后的值=10”
在准备提交事务的时候会写入一条binlog。
网友评论