doc: 阅读purge文档
This commit is contained in:
@@ -379,4 +379,22 @@ undo log中主要存储旧的col值,用于在回滚或mvcc时为undo操作提
|
||||
- `TRX_UNDO_DEL_MARK_REC`类型的记录,将原记录标记为删除
|
||||
- `TRX_UNDO_INSERT_REC`类型的记录,标记对`新纪录`的插入回滚
|
||||
|
||||
### purge
|
||||
表`t`中,`a`为聚簇索引,`b`为辅助索引,若执行如下sql
|
||||
```sql
|
||||
delete from t where a=1;
|
||||
```
|
||||
|
||||
上述语句造成的修改如下:
|
||||
- 将主键`a`为1的记录标记为delete,将记录`delete flag`设置为1(聚簇索引中的数据并没有被实际物理删除),`且会生成针对聚簇索引的undo log`
|
||||
- 对于辅助索引中满足`a=1`的记录,同样不会做任何处理,`也不会产生针对辅助索引的undo log`
|
||||
|
||||
> undo log只针对聚簇索引生成,对于辅助索引的变化并不会生成对应的undo log。
|
||||
>
|
||||
> 从上文的undo log内容来看,update undo log和insert undo log都记录了唯一索引(聚簇索引)的值,并且update undo log记录了各修改列的oldValue,二者均不涉及辅助索引内容。
|
||||
|
||||
可知在delete语句执行时,并不会马上就对记录进行物理删除,而是将记录标记为delete,记录实际的删除在purge操作时才被执行。
|
||||
|
||||
在update
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user