采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师您好,mvcc下select是不加锁的,是快照读, 问题一:以前rc和rr区别就是在select加锁上,那么mvcc下RC和RR有啥区别了? 问题二:RC是不是也可以解决可重复读的问题了,研究了好长时间,麻烦老师详细解答下,谢谢
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。
登录后可查看更多问答,登录/注册
为面试新手量身定制的Java面试尊享课,解锁“鲤鱼跃龙门”的妙招
1.2k 4
1.0k 9
1.1k 8
1.9k 7
1.3k 6