请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

RR级别避免幻读的问题

无论是当前读还是快照读,在innodb的RR的事务隔离级别下都可以避免幻读。在快照读的情况下,innodb通过mvcc来避免幻读;在当前读的情况下,innodb通过next-key锁来避免幻读。老师我可以这么认为吗?可能我目前对next-key锁还很难理解吧,我打算再看看,之前没接触过这么深,但是我希望能先把结论明确了。

正在回答 回答被采纳积分+3

1回答

翔仔 2019-03-13 11:11:22

同学好,是这样的哈,赞同学刻苦专研的精神,这样才容易提高

0 回复 有任何疑惑可以回复我~
  • 上面的问题,老师说是这样的我有疑问。我认为rr级别下快照读mvcc并不能避免幻读的,(事务A开始,快照读查询所有数据10条,事务B开始,在事务A查询范围内插入一条数据并提交,事务A再查询还是10条,修改所有数据,结果修改了11条)。我的理解是快照读mvcc只是避免了不可重复读的问题。还是说上面A事务再查询还是10条,就已经体现了避免幻读,结果修改了11条是无法避免的问题
    回复 有任何疑惑可以回复我~ 2019-08-24 15:31:42
  • 翔仔 回复 qq_啊哒_0 #2
    同学好,快照读的时候一直是10条本身就避免了让快照读出现幻读的情况,因此快照读"碰巧"避免了幻读,但是当前读不行,当前读的话,针对同学说的情况,当事务B提交了新增一条的变动并成功之后,确实能读出十一条。但是又"碰巧"能有一定程度的预防,当A先使用当前读锁定记录了之后,B的修改就会一直hung住,此时会在一定程度上避免幻读:)
    回复 有任何疑惑可以回复我~ 2019-08-24 23:29:50
  • YogurtJ 回复 翔仔 #3
    老师您好,对于当前读而言,就算是在RC级别下,当A的当前读被锁定了之后(行锁),B的修改也一样会被锁住呀,所以next-key锁在避免幻读的方面,体现在什么地方呢
    回复 有任何疑惑可以回复我~ 2020-03-06 01:22:23
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信