是什么机制能让它"恰好"避免幻读呢?
2.5k
等28人参与

描述:
前面我们讲解了RR能避免幻读,那么是什么机制能让它"恰好"避免幻读呢?

思路:
可以好好研究一下什么是Gap锁,并多做实验,看看Gap锁为什么能避免幻行和幻读。
幻行:
可以在RC和RR下面分别执行如下语句,因为RC和RR的最显著区别就是RR多了Gap锁
假设原数据集合 1 2 4 5
事务1:select from xxx where between 1 and 5 for update
事务2:insert into xxx values(3)
事务2: commited
事务1:select from xxx where between 1 and 5 for update
幻读:
假定说数据库有id 1 - 5的数据
事务A,B 都开启事务,
事务A:select * from xxx where id between 1 and 4 for update;
事务B: insert into xxx values(6,‘s’);
事务B: commited
事务A: update xxx set name = ‘j’ where id = 6

就会发现,上了Gap锁的部分是能避免幻行和幻读的

我的作业
去发布

登录后即可发布作业,立即

全部作业

老师您好,为啥试了一下,快照读的时候新插入的数据都可以读到。

0
评论
提交于  2024-07-24 20:47:57

登录后即可查看更多作业,立即

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号