diff --git a/mysql/mysql文档/mysql_事务.md b/mysql/mysql文档/mysql_事务.md index 5e42e10..5dacb5b 100644 --- a/mysql/mysql文档/mysql_事务.md +++ b/mysql/mysql文档/mysql_事务.md @@ -417,6 +417,15 @@ undo log除了由undo log record组成外,其还包含了一个undo log header 通过index中的记录及其rollptr引用的链表,可以对记录关联的`I, J, K`三个版本进行还原。 +#### 物理组织方式 +undo log的结构如上述所示,我们无法控制事务生成undo log的大小(当事务操作大量的数据时,其undo log对应的undo records数量也会变多,undo log大小更大)。但是,`最终生成undo log写入磁盘时,会基于固定的大小进行写入(16KB)`。 + +由于事务关联`undo log`的大小是无法控制的,其大小可能需要多个页来进行存储。故而,`对占用空间较大的undo log,undo page会按照需要进行分配`;`而对于大小较小的undo log,会将多个undo log放置在同一个undo page中`。 + +> undo log和undo page的对应关系是灵活的,既可能一个undo log占用多个undo pages,也可能多个undo log共用相同的undo page + + + ### purge 表`t`中,`a`为聚簇索引,`b`为辅助索引,若执行如下sql ```sql