doc: 阅读innodb undo log文档
This commit is contained in:
@@ -362,5 +362,21 @@ update undo log的格式如下图所示。
|
|||||||
- 14:TRX_UNDO_DEL_MARK_REC,将记录标记为delete
|
- 14:TRX_UNDO_DEL_MARK_REC,将记录标记为delete
|
||||||
- update vector: update vector中记录了update操作导致发生改变的列,每个被修改的列信息都记录在undo log中。
|
- update vector: update vector中记录了update操作导致发生改变的列,每个被修改的列信息都记录在undo log中。
|
||||||
|
|
||||||
|
> 在执行delete操作时,并不会直接对行数据进行物理删除操作,而是`将行数据标记为delete`,待后续purge操作中才会实际对数据进行物理删除。
|
||||||
|
|
||||||
undo log中主要存储旧的col值,用于在回滚或mvcc时为undo操作提供信息,还原数据先前的版本。
|
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`类型的记录,标记对`新纪录`的插入回滚
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user