在RR隔离级别下,快照读出现了幻读?

来源:3-17 锁模块之RR如何避免幻读

qq_机智勇敢_0

2020-04-23

Session A

BEGIN; // 两个BEGIN首先同时开启,这是第一步
INSERT INTO tx(id, account) VALUES (NULL, 8888); 第三步
COMMIT; // 第四步

Session B

BEGIN;// 两个BEGIN同时首先开启,这是第一步
SELECT * FROM tx; // 读到N条记录,这是第二步
UPDATE tx SET account = account - 50; 第五步
SELECT * FROM tx; // 第六步,执行完这一步,就读到了第五步的结果,出现了幻读
COMMIT;

老师,第六步出现的应该就是幻读吧?那么出现幻读的原因,我猜是不是因为update语句更新了undo日志中这些记录的版本,然后第六步的快照读读取了最新版本的记录?

写回答

1回答

翔仔

2020-04-24

同学好,RR下面只是能部分避免幻读的情况,详情可以看看这个

http://coding.imooc.com/learn/questiondetail/172010.html


0
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8441 学习 · 1872 问题

查看课程