MVCC
MVCC的理解
mcc就是多版本并发控制,用在数据库中,对数据库的访问进行并发控制
使用场景
只用在已提交读和可重复读中(行锁)两种隔离级别
为什么要用MVCC
我们都知道锁用来控制多线程并发的,但是系统开销比较大,所以就用mvcc来代替行锁,减少系统的开销
MVCC实现方式
利用乐观锁和悲观锁来实现
乐观锁和悲观锁
乐观锁每次操作数据都不会上锁,有两种实现方式,版本号机制和cas机制,版本号机制就是通过更新信息的时候添加版本号来实现,cas机制就是通过比较内存中的值来决定它是否需要更新。cas会产生aba问题,就是一个线程在另一个线程未知的情况下,数据从a修改为b又修改为a,可以用版本号机制来解决。悲观锁每次操作数据都会上锁。