undo header page是事务需要写undo log时申请的第一个undo page;一个undo header page他同一时刻只隶属于同一个活跃事务,但是一个undo header page上面的内容可能包含多个已经提交的事务和一个活跃事务。 undo normal page是当活跃事务产生的undo record超过undo header page容量后,单独再为此事务分配的undo page(参考...
undo header page是事务需要写undo log时申请的第一个undo page;一个undo header page他同一时刻只隶属于同一个活跃事务,但是一个undo header page上面的内容可能包含多个已经提交的事务和一个活跃事务。 undo normal page是当活跃事务产生的undo record超过undo header page容量后,单独再为此事务分配的undo page(参考...
InnoDB设计类型为TRX_UNDO_UPD_EXIST_REC的undo日志,这个undo日志的大部分属性与前面介绍过的TRX_UNDO_DEL_MARK_REC类型的undo日志是类似的,不过要注意下面几点: n_updated属性表示在本条UPDATE语句执行后将有几个列被更新,后边跟着的列表中的pos、old_len和old_value分别表示被更新列在记录中的位置、更新前该列占...
事务申请一个新的Undo Slot就需要创建一个新的段的内存结构,为了避免频繁创建和释放段,回滚段的内存结构trx_rseg_t额外引入了两个cache链表:Insert Undo cached链表和Update Undo cached链表,分别用于回收只使用了一个Undo page,并且Undo page使用的空间小于整个页面空间的3/4的Insert Undo Slot或者Update Undo Slot。
一、UNDO日志格式 1、INSERT操作对应的UNDO日志 如果需要回滚一个插入操作,那么只需要把这条记录删除就好了,所以插入操作对应的undo日志会记录下这条记录的主键信息,其完整的结构如下: end of record:指向本条undo日志结束的位置,即下一条日志开始时在页面中的地址 ...
事务提交完成之后,InnoDB 会根据状态缓存或者释放 insert undo 段。 2.2 生成事务提交号 事务提交号是事务对象的no属性,通常用trx->no表示。 代码里,对事务提交号的注释是transaction serialization number,直译成中文应该称为事务序列号,或者事务串行号。
Undo Tablespace的重建缩小,称为Undo Tablespace Truncate 2 Undo Purge 这一步主要针对的是TRX_UNDO_DEL_MARK_REC类型的Undo Record,用来真正的删除索引上被标记为Delete Mark的Record。worker线程会在row_purge函数中,循环处理coordinator分配来的每一个Undo Records,先通过row_purge_parse_undo_rec,依次从Undo Re...
undo log(回滚日志):由InnoDB生成的日志,实现事务中的原子性,主要用于事务回滚和MVCC。 redo log(重做日志):由InnoDB生成的日志,实现事务中的持久性,主要用于掉电等故障恢复。 bin log(归档日志):由Server层生成的日志,主要用于数据备份和主从复制。 undo log# ...
首先,在MySQL5.6之前所有的undo log全部存储在系统表空间中(ibdata1);但是从5.6开始也可以使用独立表空间来存储undo log。 当前版本InnoDB默认有两个undo tablespace,也可以使用CREATE UNDO TABLESPACE语句动态添加,最大128个;每个undo tablespace至多可以有TRX_SYS_N_RSEGS(128)个回滚段。
insert undo log是指在insert操作中产生的undo log 因为insert操作的记录只对事务本身可见,对其他事务不可见(这是事务隔离性的要求),故该undo log可以在事务提交后直接删除,不需要进行purge操作 下图显示了insert undo log的格式: *:表示该字段处进行了压缩 ...