鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ mysql事務(wù)RR隔離級(jí)別到底能否解決幻讀的問(wèn)題?

mysql事務(wù)RR隔離級(jí)別到底能否解決幻讀的問(wèn)題?

在mysql的innodb引擎 默認(rèn)RR隔離級(jí)別下, 假設(shè)表中有5條數(shù)據(jù),
1.如果事務(wù)A中查詢所有數(shù)據(jù)

2.然后在事務(wù)B中向表中插入一條數(shù)據(jù)并提交

3.回到事務(wù)A中查詢, 發(fā)現(xiàn)數(shù)據(jù)沒(méi)有新增

上面三步貌似已經(jīng)可以證實(shí)解決了幻讀的問(wèn)題

但是如果在第三步不是查詢, 而是插入, 卻會(huì)提示你數(shù)據(jù)已經(jīng)存在出現(xiàn)主鍵沖突, 或者你進(jìn)行update, 也是可以進(jìn)行更新的(雖然讀不到這條數(shù)據(jù)) 這應(yīng)該不屬于幻讀了吧?

那么這到底是什么原因呢?

回答
編輯回答
別傷我

RR在讀取數(shù)據(jù),事務(wù)開(kāi)啟的時(shí)候,不允許修改操作??梢越鉀Q不可重復(fù)讀的問(wèn)題,但是還是不能根本解決幻讀問(wèn)題。幻讀對(duì)應(yīng)的應(yīng)該是insert操作。RR針對(duì)的是update操作。

2017年10月15日 23:21
編輯回答
帥到炸

這個(gè)推薦一篇文章吧,希望能解決你的困惑,寫(xiě)的還是挺詳細(xì)的:
撥開(kāi)云霧見(jiàn)天日:數(shù)據(jù)庫(kù)單機(jī)事務(wù)原理全解析

2018年2月5日 23:17