doc: 阅读undo log文档

This commit is contained in:
asahi
2025-08-01 12:26:41 +08:00
parent 449caf7a6c
commit 088e0ead13

View File

@@ -376,7 +376,7 @@ undo log中主要存储旧的col值用于在回滚或mvcc时为undo操作提
- 在对记录的非主键值进行update时会生成一条`type_cmpl`值为`TRX_UNDO_UPD_EXIST_REC`的记录,用于对更新操作进行回滚
- update记录的主键值
- 当对记录主键列进行修改时会生成两条undo log
- `TRX_UNDO_DEL_MARK_REC`类型的记录,将原记录标记为删除
- `TRX_UNDO_DEL_MARK_REC`类型的记录,对应`将原记录标记为删除`的回滚
- `TRX_UNDO_INSERT_REC`类型的记录,标记对`新纪录`的插入回滚
### purge
@@ -395,6 +395,14 @@ delete from t where a=1;
可知在delete语句执行时并不会马上就对记录进行物理删除而是将记录标记为delete记录实际的删除在purge操作时才被执行。
在update
对于记录的`delete`操作和`update`操作update主键列时会先将原记录标记为删除后插入一条新的记录会在purge操作中完成。purge确保了innodb存储引擎对于MVCC机制的支持记录不能再事务提交时立刻进行处理仍会有其他事务会访问该记录的旧版本。
是否可以对记录进行物理删除由purge来决定若某行记录不被其他任何事务引用可以执行物理delete操作。
#### history
innodb存储引擎中维护了一个history列表`根据事务的提交顺序`对undo log进行链接`在history list中先提交的事务其undo log位于history list的尾端`