采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
无论是当前读还是快照读,在innodb的RR的事务隔离级别下都可以避免幻读。在快照读的情况下,innodb通过mvcc来避免幻读;在当前读的情况下,innodb通过next-key锁来避免幻读。老师我可以这么认为吗?可能我目前对next-key锁还很难理解吧,我打算再看看,之前没接触过这么深,但是我希望能先把结论明确了。
同学好,是这样的哈,赞同学刻苦专研的精神,这样才容易提高
上面的问题,老师说是这样的我有疑问。我认为rr级别下快照读mvcc并不能避免幻读的,(事务A开始,快照读查询所有数据10条,事务B开始,在事务A查询范围内插入一条数据并提交,事务A再查询还是10条,修改所有数据,结果修改了11条)。我的理解是快照读mvcc只是避免了不可重复读的问题。还是说上面A事务再查询还是10条,就已经体现了避免幻读,结果修改了11条是无法避免的问题
同学好,快照读的时候一直是10条本身就避免了让快照读出现幻读的情况,因此快照读"碰巧"避免了幻读,但是当前读不行,当前读的话,针对同学说的情况,当事务B提交了新增一条的变动并成功之后,确实能读出十一条。但是又"碰巧"能有一定程度的预防,当A先使用当前读锁定记录了之后,B的修改就会一直hung住,此时会在一定程度上避免幻读:)
老师您好,对于当前读而言,就算是在RC级别下,当A的当前读被锁定了之后(行锁),B的修改也一样会被锁住呀,所以next-key锁在避免幻读的方面,体现在什么地方呢
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.8k 27
2.7k 22
1.2k 15
1.4k 14
1.3k 14