阿里云数字新基建系列:云数据库架构
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.6 InnoDB Mini-Transaction

redo日志会记录数据页的变化,一条SQL语句在执行时可能会修改若干个页面,会产生多条redo日志。这些redo日志会被分成多个log-group,每一组都被称作Mini-Transaction(MTR),它也是InnoDB最小的原子单元,保证了页面级别操作的原子性,即要么都完成,要么都不完成。假设没有MTR,B+Tree-split会涉及多个页面的修改,如果中途有异常操作,则会破坏整体的原子性,所以InnoDB在log-group最后加了一条带有特殊标记的日志。在实例恢复重做时,只有解析到末尾的标记才被认定是完整的一组日志;否则,丢弃之前解析到的无效日志。