doc: 阅读mysql文档

This commit is contained in:
asahi
2025-07-22 00:36:56 +08:00
parent 1da87e132c
commit ad4e53c93d

View File

@@ -324,8 +324,27 @@ undo slot主要用于关联undo segment`当事务启动时系统会从roll
##### undo segment
undo segment为undo slot指向的空间undo segment中包含多个undo pages而undo segment中则包含了undo log。
#### undo log格式
在innodb存储引擎中undo log分为如下两种类型
- insert undo log:
- insert undo log是事务在insert操作中产生的undo log
- 在事务提交之前事务插入的数据对其他事务不可见而事务提交之后事务插入的数据对其他读已提交的事务才可见故而insert undo log在事务提交之后不再被需要因为在读已提交隔离级别下insert undo log是可见的在可重复读的隔离级别下insert undo log则是不可见的没有中间版本只能可见/不可见
- 故而当事务提交之后即可删除该事务关联的insert undo log
- update undo log
##### insert undo log
在事务提交之后insert undo log即可被删除故而无需purge操作。
insert undo log结构如下
- next下一个undo log的位置长度为2字节
- type_impl: 记录undo的类型对于insert undo来说该值为11。该字段长度为1字节
- undo_no记录事务的id压缩后保存
- table_id: 记录undo log对应的表对象压缩后保存
- 记录所有主键的列和值(本次插入的数据,可能多条)
- start位于undo log尾部记录undo log的开始位置长度为2字节
> ##### rollback
> 在执行rollback操作时可以根据insert undo log中存储的table id主键列、主键值来定位需要回滚的行数据直接删除回滚数据即可。