doc: 文档阅读

This commit is contained in:
asahi
2025-08-12 01:41:07 +08:00
parent e67c9a4cae
commit 1bdc9db292
2 changed files with 10 additions and 0 deletions

View File

@@ -0,0 +1 @@
# mysql mvcc

View File

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