diff --git a/mysql/mysql文档/mysql_事务.md b/mysql/mysql文档/mysql_事务.md index 6c1ed06..ea6151f 100644 --- a/mysql/mysql文档/mysql_事务.md +++ b/mysql/mysql文档/mysql_事务.md @@ -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,主键列、主键值来定位需要回滚的行数据,直接删除回滚数据即可。 +mysql redo log 事务大_MySQL事务实现及Redo Log和Undo Log详解-CSDN博客 +##### update undo log +update undo log针对的是`delete`和`update`操作。在mvcc机制的实现中,需要用到该undo log,故而`update undo log在事务提交后不能立刻删除`。 +update undo log的格式如下图所示。 + +MySQL的redo log、undo log、binlog_mysql redolog undolog binlog-CSDN博客 + +对于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中。 \ No newline at end of file