解决的问题:
- 解决不可重复读和幻读问题的一种乐观实现方式(代替行锁)
- 读-写的无锁并发控制,降低系统开销
其他方案及比较:LBCC,mvcc可以避免不同事物之间的竞争
- LBCC解决的是当前读情况下的幻读(记录锁,间隙锁,临建锁)
- MVCC解决的是快照读情况下的幻读
实现原理:依赖于三个隐藏字段、undo log和read view
- 隐藏字段
- DB_TRX_ID:记录插入或更新的最后一个事务id
- DB_ROLL_PTR:指向该行对应的undolog的指针
- DB_ROW_ID:主键id
可能出现的问题: