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

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

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

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

回答
編輯回答
替身

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

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

2017年12月22日 08:38