美文网首页
InnoDB学习笔记(2)Undo log

InnoDB学习笔记(2)Undo log

作者: Sarahhhh | 来源:发表于2019-03-30 19:22 被阅读0次

MySQL · 引擎特性 · InnoDB undo log 漫游

  • INSERT操作在事务提交前只对当前事务可见,因此产生的Undo日志可以在事务提交后直接删除
  • UPDATE和DELETE操作产生的Undo日志被归成一类,即update_undo

回滚段

InnoDB采用回滚段的方式来维护undo log的并发写入和持久化。回滚段实际上是一种 Undo 文件组织方式,每个回滚段又有多个undo log slot。

一共128个回滚段,每个回滚段维护了一个段头页,在该page中又划分了1024个slot(TRX_RSEG_N_SLOTS),每个slot又对应到一个undo log对象,因此理论上InnoDB最多支持 96 * 1024个普通事务。

  1. rseg0预留在系统表空间ibdata中;
  2. rseg 1~rseg 32这32个回滚段存放于临时表的系统表空间中;
  3. rseg33~ 则根据配置存放到独立undo表空间中(如果没有打开独立Undo表空间,则存放于ibdata中)

事务提交

MySQL XA 介绍

当事务完成需要提交时,为了和BINLOG做XA,InnoDB的commit被划分成了两个阶段:prepare阶段和commit阶段。

为了在崩溃重启时知道事务状态,需要将事务设置为Prepare,MySQL 5.7对临时表undo和普通表undo分别做了处理,前者在写undo日志时总是不需要记录redo,后者则需要记录。

当事务commit时,需要将事务状态设置为COMMIT状态,这里同样通过Undo来实现的。

相关文章

  • InnoDB学习笔记(2)Undo log

    MySQL · 引擎特性 · InnoDB undo log 漫游 INSERT操作在事务提交前只对当前事务可见,...

  • MYSQL事务日志

    innodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作,undo l...

  • MySQL 日志(redo log 和 undo log) 都是

    innodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作,undo l...

  • MySQL之redo、undo

    innodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作。undo l...

  • MYSQL REDO UNDO

    本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游 00 – Undo Log Undo Log 是为了实...

  • innodb undo log

    文章概述 对innodb特有的两种日志redo log和undo log中的undo log基本概念、应用场景进行...

  • MySQL月末知识汇总

    一、mysql事务 innodb事务日志包括redo log和undo log。 redo log是重做日志,提供...

  • 2021-01-15 mysql8 undo的一些操作

    undo log 数默认为2 查看存在的undo log 新增undo log 删除undo log(先要更改un...

  • Innodb中的undo log

    Innodb实现事务的原子性时,使用的是undo log,当事务失败时,就使用undo log回滚事务的修改。 使...

  • innodb redo log

    # 文章概述 对innodb特有的两种日志redo log和undo log中的redo log基本概念、应用场景...

网友评论

      本文标题:InnoDB学习笔记(2)Undo log

      本文链接:https://www.haomeiwen.com/subject/pavsbqtx.html