doc: 阅读innodb undo log文档

This commit is contained in:
asahi
2025-07-23 12:47:34 +08:00
parent 63c89cf851
commit 2c9278a410

View File

@@ -362,5 +362,21 @@ update undo log的格式如下图所示。
- 14TRX_UNDO_DEL_MARK_REC将记录标记为delete
- update vector: update vector中记录了update操作导致发生改变的列每个被修改的列信息都记录在undo log中。
> 在执行delete操作时并不会直接对行数据进行物理删除操作而是`将行数据标记为delete`待后续purge操作中才会实际对数据进行物理删除。
undo log中主要存储旧的col值用于在回滚或mvcc时为undo操作提供信息还原数据先前的版本。
在实际生成insert/update undo log时对于插入、更新、删除等操作其实际生成undo log的方式如下
- insert操作
- 对于insert操作其实际生成一条insert undo log`type_cmpl`的值为`TRX_UNDO_INSERT_REC`
- delete操作
- 对于delete操作其实际生成一条`type_cmpl`值为`TRX_UNDO_DEL_MARK_REC`的undo log
- delete操作并不会直接对记录进行物理删除而是将记录标记为delete后续进行purge操作时才会实际删除
- update记录的非主键值
- 在对记录的非主键值进行update时会生成一条`type_cmpl`值为`TRX_UNDO_UPD_EXIST_REC`的记录,用于对更新操作进行回滚
- update记录的主键值
- 当对记录主键列进行修改时会生成两条undo log
- `TRX_UNDO_DEL_MARK_REC`类型的记录,将原记录标记为删除
- `TRX_UNDO_INSERT_REC`类型的记录,标记对`新纪录`的插入回滚