记一次看大神们讨论的结果

MVCC和乐观锁的区别

  1. 问题域不同:乐观锁为了解决写-写冲突,MVCC为了减少读-写冲突。
  2. 实现原理不同:乐观锁是锁的一种实现,MVCC是copyOnWrite的一种实现(带版本号)。
  3. 解决方式不同: 锁是排队共享资源,MVCC是增加资源减少争用。

附带一个关于mysql锁的问题

记一次看大神们讨论的结果

* 结果是:事务二会等待直到超时。
原因:事务1 lock in share mode给符合的行加上共享锁,其他事务可以继续读或者加共享锁,但是不可写。事务2 会锁表等待事务1 结束。