doc: 文档阅读
This commit is contained in:
@@ -496,6 +496,15 @@ rollback segment的分配策略很简单,会依次尝试下一个活跃的roll
|
||||
#### undo for rollback
|
||||
在回滚时,会按照undo record生成的时序,逆向进行回滚。回滚根据undo record的内容。
|
||||
|
||||
#### undo for mvcc
|
||||
mvcc中`“多版本”设计是为了读事务和写事务之间互相等待`。在传统的读写锁设计中,读写/写写之间都是互斥的,只要有事务持有读锁,则其他事务拿不到写锁;如果有事务持有写锁,则其他事务拿不到读锁和写锁。在多事务同时进行并发操作的场景下,如果采用读写锁进行相互等待,那么将会对性能造成很大的影响。
|
||||
|
||||
在采用多版本的设计后,每个读事务在对record进行读取时,`无需对record添加锁,而是查看读事务可见的历史版本即可`。
|
||||
|
||||
##### 历史版本
|
||||
在多版本设计中,“历史版本”在设计上等效于如下描述:
|
||||
- 在读事务开启时,会针对整个数据库中的生成一个快照,后续该事务的读操作都从该快照中获取数据
|
||||
|
||||
### purge
|
||||
表`t`中,`a`为聚簇索引,`b`为辅助索引,若执行如下sql
|
||||
```sql
|
||||
|
||||
Reference in New Issue
Block a user