MySQL数据库默认隔离级别:RR可重复读
MVCC只适用于RC、RR隔离级别;
1)RC:读取提交的内容,可避免发生脏读。也就是事务只能看到已经提交事务所作的改变,支持不可重复读;
2)RR:可重读;可避免脏读、不可重复读的发生;
1、MVCC
multi-version concurrency Control多版本并发控制,乐观锁的实现方式;适用范围广泛;通过保存数据在某个时间点的快照来实现。
优点:读不加锁,读写不冲突;
缺点:存储引擎必须为每一行存储更多的数据,增加检测工作和其他工作;
1)解决的问题
- 大多数mySQL事务引擎InnoDB使用简单的行锁机制,大都和MVCC-多版本并发控制一起使用;
- 锁机制可以控制并发操作,但是系统开销较大,而MVCC大多数情况下代替行级锁,可以降低系统开销;
2)基本特征
- 每行数据都存在一个版本,更新数据就更新版本;
- 修改时copy出当前版本随意更改,各个事务部干扰;
- 保存时比较版本号,如果成功commit,则覆盖原记录,失败则放弃copy(rollback); <