doc: 阅读undo log文档

This commit is contained in:
asahi
2025-07-22 12:49:06 +08:00
parent ad4e53c93d
commit 2e854a4d9f

View File

@@ -337,7 +337,7 @@ undo segment为undo slot指向的空间undo segment中包含多个undo pages
insert undo log结构如下 insert undo log结构如下
- next下一个undo log的位置长度为2字节 - next下一个undo log的位置长度为2字节
- type_impl: 记录undo的类型对于insert undo来说该值为11。该字段长度为1字节 - type_cmpl: 记录undo的类型对于insert undo来说该值为11。该字段长度为1字节
- undo_no记录事务的id压缩后保存 - undo_no记录事务的id压缩后保存
- table_id: 记录undo log对应的表对象压缩后保存 - table_id: 记录undo log对应的表对象压缩后保存
- 记录所有主键的列和值(本次插入的数据,可能多条) - 记录所有主键的列和值(本次插入的数据,可能多条)
@@ -346,5 +346,18 @@ insert undo log结构如下
> ##### rollback > ##### rollback
> 在执行rollback操作时可以根据insert undo log中存储的table id主键列、主键值来定位需要回滚的行数据直接删除回滚数据即可。 > 在执行rollback操作时可以根据insert undo log中存储的table id主键列、主键值来定位需要回滚的行数据直接删除回滚数据即可。
<img src="https://ts3.tc.mm.bing.net/th/id/OIP-C.DUFx18elzLQKwUNUss-FLgAAAA?rs=1&amp;pid=ImgDetMain&amp;o=7&amp;rm=3" alt="mysql redo log 事务大_MySQL事务实现及Redo Log和Undo Log详解-CSDN博客" class=" nofocus" tabindex="0" aria-label="mysql redo log 事务大_MySQL事务实现及Redo Log和Undo Log详解-CSDN博客" role="button">
##### update undo log
update undo log针对的是`delete``update`操作。在mvcc机制的实现中需要用到该undo log故而`update undo log在事务提交后不能立刻删除`
update undo log的格式如下图所示。
<img src="https://img-blog.csdnimg.cn/20190917162925836.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NhcmFmaW5hNTI3,size_16,color_FFFFFF,t_70" alt="MySQL的redo log、undo log、binlog_mysql redolog undolog binlog-CSDN博客" class=" nofocus" tabindex="0" aria-label="MySQL的redo log、undo log、binlog_mysql redolog undolog binlog-CSDN博客" role="button">
对于update undo log其哥字段含义如下
- type_cmpl: 对update undo log`type_cmpl`可能的取值如下:
- 12TRX_UNDO_UPD_EXIST_REC更新未被标记为delete的记录
- 13TRX_UNDO_UPD_DEL_REC更新`已经被标记为delete的记录`
- 14TRX_UNDO_DEL_MARK_REC将记录标记为delete
- update vector: update vector中记录了update操作导致发生改变的列每个被修改的列信息都记录在undo log中。