浅浅谈Innodb事务

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操作

猜你喜欢

转载自blog.csdn.net/weixin_45583648/article/details/107006774