doc: 阅读undo log文档
This commit is contained in:
@@ -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的尾端`。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user