doc: 阅读undo log文档
This commit is contained in:
@@ -337,7 +337,7 @@ undo segment为undo slot指向的空间,undo segment中包含多个undo pages
|
||||
|
||||
insert undo log结构如下:
|
||||
- next:下一个undo log的位置,长度为2字节
|
||||
- type_impl: 记录undo的类型,对于insert undo来说,该值为11。该字段长度为1字节
|
||||
- type_cmpl: 记录undo的类型,对于insert undo来说,该值为11。该字段长度为1字节
|
||||
- undo_no:记录事务的id(压缩后保存)
|
||||
- table_id: 记录undo log对应的表对象(压缩后保存)
|
||||
- 记录所有主键的列和值(本次插入的数据,可能多条)
|
||||
@@ -346,5 +346,18 @@ insert undo log结构如下:
|
||||
> ##### rollback
|
||||
> 在执行rollback操作时,可以根据insert undo log中存储的table id,主键列、主键值来定位需要回滚的行数据,直接删除回滚数据即可。
|
||||
|
||||
<img src="https://ts3.tc.mm.bing.net/th/id/OIP-C.DUFx18elzLQKwUNUss-FLgAAAA?rs=1&pid=ImgDetMain&o=7&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`可能的取值如下:
|
||||
- 12:TRX_UNDO_UPD_EXIST_REC,更新未被标记为delete的记录
|
||||
- 13:TRX_UNDO_UPD_DEL_REC,更新`已经被标记为delete的记录`
|
||||
- 14:TRX_UNDO_DEL_MARK_REC,将记录标记为delete
|
||||
- update vector: update vector中记录了update操作导致发生改变的列,每个被修改的列信息都记录在undo log中。
|
||||
Reference in New Issue
Block a user