diff --git a/mysql/mysql文档/mysql_事务.md b/mysql/mysql文档/mysql_事务.md index 5410afd..658be7b 100644 --- a/mysql/mysql文档/mysql_事务.md +++ b/mysql/mysql文档/mysql_事务.md @@ -450,6 +450,16 @@ undo segment header中包含如下内容: ##### undo log storing undo page中的空间用于存储undo log,对于`大小较小的undo log`innodb会对undo page进行reuse,在undo page中存储多个undo logs避免浪费空间。而对于大小较大的undo log,会使用多个undo page来对该undo log进行存储。(undo page reuse只会发生在segment的第一个page)。 +#### 文件组织方式 +在同一时刻,一个undo segment只属于一个事务,一个undo segment无法同时被多个事务共享。每当事务开启时,都会获取一个undo segment,故而,在多个事务并行的运行时,需要多个undo segment。 + +##### rollback segment +在innodb中,每个rollback segment中包含了1024个undo slot,而每个undo tablespace最多包含128个rollback segment。 + +rollback segment header中包含了128个slot,每个slot包含4字节,并且都指向`某个undo segment的第一页`。 + +undo slot的数量会影响innodb数据库中的事务并行程度, + ### purge 表`t`中,`a`为聚簇索引,`b`为辅助索引,若执行如下sql ```sql