鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)/ MySQL為什么會(huì)產(chǎn)生臟讀?

MySQL為什么會(huì)產(chǎn)生臟讀?

查閱資料:
1、MySQL事務(wù)具有隔離性,事務(wù)處理過(guò)程中的中間狀態(tài)對(duì)外不可見;
2、MySQL臟讀是指一個(gè)事務(wù)正在對(duì)一條記錄做修改,在這個(gè)事務(wù)完成并提交前,這條記錄的數(shù)據(jù)就處于不一致狀態(tài);這時(shí),另一個(gè)事務(wù)也來(lái)讀取同一條記錄,如果不加控制,第二個(gè)事務(wù)讀取了這些“臟”數(shù)據(jù),并據(jù)此做進(jìn)一步的處理,就會(huì)產(chǎn)生未提交的數(shù)據(jù)依賴關(guān)系。

疑問(wèn)是:
既然事務(wù)具有隔離性,怎么還會(huì)讀到其他事務(wù)未提交的“臟”數(shù)據(jù)?

回答
編輯回答
替身

這就涉及到事物的隔離級(jí)別了.隔離級(jí)別越高,越能保證數(shù)據(jù)的完整性和一致性,但是對(duì)并發(fā)性能的影響也越大

事務(wù)隔離級(jí)別                    臟讀     不可重復(fù)讀    幻讀
讀未提交(read-uncommitted)    是        是            是
不可重復(fù)讀(read-committed)    否        是            是
可重復(fù)讀(repeatable-read)     否        否            是
串行化(serializable)          否        否            否

2017年12月22日 08:38