redo log(重写日志)
redo log的特点
- redo log是用来实现原子性和持久性。
- redo log由重做日志缓冲区(内存中)和重做日志文件文件(磁盘中)两部分组成。
- redo log是物理日志,记录的是页的物理修改操作。
流程
- 在InnoDB存储引擎中,通过Force Log at Commit机制实现事务的持久化;
- 当事务提交时,必须先将该事务的redo log写入到重做日志文件中进行持久化,待事务的commit操作完成才算完成。
Innodb_flush_log_at_trx_commit参数用来控制日志刷新到磁盘的策略:
参数:
- 0:事务提交时不进行写入重做日志操作,而是由主线程完成,主线程每秒执行一次重做日志的fsync操作;
- 1:事务提交时必须调用一次fsync操作,默认值;
- 2:事务提交时将重做日志写入重做日志文件,但仅写入到文件系统的缓存,不进行fsync操作。由文件系统触发fsync操作。
undo log
undo log的特点
- undo log 用来实现一致性,用于回滚和MVCC
- undo log 记录的是逻辑日志
- undo log 记录的是反操作,比如对于每一个INSERT会有一个对应的DELETE,UPDATE会有个反的UPDATE操作
来源:oschina
链接:https://my.oschina.net/u/4295823/blog/4329620