请稍等 ...
×

采纳答案成功!

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

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

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日志中这些记录的版本,然后第六步的快照读读取了最新版本的记录?

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

1回答

翔仔 2020-04-24 11:02:40

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

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


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信