BinLog,RedoLog,UndoLog傻傻分不清
我们先看下5.7 innodb的磁盘存储结构
1. UndoLog
是实现innodb MVCC的重要组成部分
概述:
-
Undolog :事务开始之前,将修改的记录放到Undo日志中,当事务回滚或者数据库崩溃时,利用Undo日志,撤销未提交事务对数据库产生的影响
-
Undolog 产生和销毁: Undo log在事务开始前产生;事务在提交时,并不会立刻删除undo log,innodb会将事务对应的undolog 放到删除列表中,后面会通过后台线程purge thread进行回收处理,Undo log 属于逻辑日志,记录一个变化过程。例如delete ,undo会记录一个insert。
-
Undolog 存储:采用段的方式管理,innodb数据文件中包含一种 rollback segment回滚段,内部包含1024个 undologsegment
show variables like ‘%innodb_undo%’
-
Undolog在磁盘存储 5.7中,既可以存在 ibdata 中,也可以在独立的undo空间中,或者临时表空间中。
8中 ,已经单独出来了一个 undo tablespace
作用:
-
实现事务的原子性
-
实现多版本并发控制(MVCC)
事务A 对User表的某条记录进行修改,那么此时会先备份一个旧数据到