7.2 事务的实现
redo log :保证事务的原子性和持久性
- 恢复提交事务修改的页操作
- 物理日志,记录的是页的物理修改操作
undo log:保证事务的一致性
- undo回滚行记录到某个特定版本
- 逻辑日志,根据每行记录进行记录
7.2.1 redo
1.基本概念
重做日志用来实现事务的持久性,由两部分组成:
一是内存中的重做日志缓冲,其是易失的;
二是重做日志文件,其是持久的。
7.2.2 undo
1.基本概念
重做日志记录了事务的行为,可以很好地通过对页进行“重做”。但是事务有时还需要进行回滚操作,这是就需undo。
2.undo存储管理
innodb_undo_directory
- 设置rollback segment文件所在的路径。
innodb_undo_logs
- 设置rollback segment的个数,默认值128
innodb_undo_tablespaces
- 设置构成rollback segment文件的数量
当事务提交时,InnoDB存储引擎会做两件事情:
- 将undo log放入列表中,以供之后的purge操作
- 判断undo log 所在的页是否可以重用,若可以分配给下格事务使用
3.undo log格式
undo log分为:
- insert undo log
- insert操作产生的undo log,只对事务本身可见,对其他事务不可见,该undo log可以在事务提交后直接删除。
- update undo log
- delete和update操作产生的undo log。需要提供MVCC机制,不能在十五提交时就进行删除。
4.查看undo信息