rc问题

来源:5-3 事务和乐观锁

manong22

2019-12-04

老师您好,mvcc下select是不加锁的,是快照读,
问题一:以前rc和rr区别就是在select加锁上,那么mvcc下RC和RR有啥区别了?
问题二:RC是不是也可以解决可重复读的问题了,研究了好长时间,麻烦老师详细解答下,谢谢

写回答

1回答

ccmouse

2019-12-11

mvcc是一中实现方式或是标准。而rc(read committed)和rr(repeated read)是其目标。

在rc中,我会读到别人对数据的改动,在rr中,不管别人怎么改,我之前读的是多少,只要我不改,就一直是多少(当然是在一个transaction里面)。这个区别还是存在的。只是实现rr的时候,用到了mvcc快照读的技术。

RC是不是也可以解决可重复读的问题了?不能,因为rc就是rc,既然mysql提供了这种rc的isolation level,就要符合rc的定义,就是不可重复读。

不过你的思考非常有用,它解释了为什么之前其它数据库的默认isolation level是rc,而mysql是rr。因为mvcc的确像你所说的,已经解决了可重复读的问题,那我们就没有比较强行降一级让大家默认在rc的隔离级别下工作,所以干脆默认就是rr。


0
0

Google面试官亲授-Java面试新手尊享课

为面试新手量身定制的Java面试尊享课,解锁“鲤鱼跃龙门”的妙招

2853 学习 · 180 问题

查看课程