记一次看大神们讨论的结果
MVCC和乐观锁的区别
- 问题域不同:乐观锁为了解决写-写冲突,MVCC为了减少读-写冲突。
- 实现原理不同:乐观锁是锁的一种实现,MVCC是copyOnWrite的一种实现(带版本号)。
- 解决方式不同: 锁是排队共享资源,MVCC是增加资源减少争用。
附带一个关于mysql锁的问题
* 结果是:事务二会等待直到超时。
原因:事务1 lock in share mode给符合的行加上共享锁,其他事务可以继续读或者加共享锁,但是不可写。事务2 会锁表等待事务1 结束。