简单理解 MySQL中的 redo log , undo log , binlog

重做日志(redo log)

作用:
  确保事务的持久性。
  防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行数据恢复,所以管它叫重做

回滚日志(undo log)

作用:
  保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读

二进制日志(binlog):

作用:
  1,用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。
  2,用于数据库的基于时间点的还原。

举例子:

要对一条数据的age=66改为 77,其实是进行了很多步操作,生成了好几个日志log

  • 从磁盘找到这行数据加载到BufferPool,
  • 这时就要在BufferPool把值 update table set age=77 where id =1 ,
  • 并生成对应 的redo log,当commit时可用于持久化
  • 同时生成binlog持久化 ,
  • 还要生成对应的undo log 就是redo的反向操作, update table set age=66 where id =1 ,这样当rollback时可以用。

猜你喜欢

转载自blog.csdn.net/liuming690452074/article/details/113819900