文章目录
乐观并发控制(optimistic concurrency control)
- 冲突很少发生的时候,采用乐观并发控制可以有很大的吞吐量,因为几乎不需要对数据加锁
- 只在提交 commit 之间加锁(两阶段锁),加锁时间非常短
- 如果发生了冲突,就重做该事物(repeat the attempts)
- 没有冲突,就提交更改值
backward validation
forward validation
快照隔离(snapshot Isolation)
- 不同于串行化策略
- 与乐观控制有关,也是高吞吐量的策略
- 当事务要进行“写操作” 的时候:
- 检查当前要写的内容是否被其他事务更改
- 没有被更改就进行 commit
- 更改了就 abort
- 读操作不需要进行 check
两版本锁(Two-version)
- 读和写可以同时操作,提高了并发性
- 允许写一个暂时的版本,同时读的是已经 commit 的版本;即写的时候也可以读
- 但是如果这个写的暂时版本要提交,读的版本就要等一下