MySQL日志梳理

MySQL日志梳理_第1张图片

MySQL日志梳理 

MySQL日志梳理_第2张图片

  • undo log(回滚日志):是InnoDB存储引擎层生成的日志,实现了事务中的原子性,主要用于事务的回滚以及保证MVCC。
  • redo log(重做日志):是InnoDB存储引擎层生成的事务日志,实现了事务中的持久性,主要用于断电等故障恢复。
  • bin log(同步日志或归档日志或二进制日志):是MySQL Server层生成的日志,是提供给所有的存储引擎都可以用的归档日志,主要用于数据恢复或者进行数据同步(主从复制),记录所有数据的更改。

undo log、redo log和bin log的作用是什么?

  • undo log和redo log是InnoDB提供的事务日志,而bin log它是由MySQL的Server层实现的归档日志。

undo log基本概念

  • undo log是一种用于撤销回退的日志,在数据库事务开始之前,MySQL会记录更新前的数据到undo log日志文件里面,当事务回滚时或者数据库崩溃时,可以利用undo log来进行回退。
  • undo log产生和销毁:undo log在事务开始前产生;事务在提交时,InnoDB并不会立刻删除undo log,因为后续还可能会用到 undo log,但在事务提交时,InnoDB会将该事务对应的undo log放入到删除列表中,后面会通过后台线程purge thread来进行回收处理。

注意:undo log也会产生对应的 redo log,因为undo log它本身也是一条SQL,也要实现持久性保护!

你可能感兴趣的:(mysql,数据库)