READ UNCOMMITED(未提交讀)
? ? 事務(wù)中的修改倦零,即使沒有提交笙什,對其他事物也都是可見的洲炊。事務(wù)可以讀取未提交的數(shù)據(jù)感局,這也被稱為臟讀。一般很少使用暂衡。
READ COMMITED(提交讀)
? ? 一個事務(wù)開始時询微,只能看見已經(jīng)提交的事務(wù)所做的修改,換句話說狂巢,一個事務(wù)從開始直到提交之前撑毛,所做的任何修改對其他事物都是不可見的。這個級別也叫不可重復(fù)讀。執(zhí)行兩次同樣的查詢藻雌,可能得到不同的結(jié)果雌续。
? ? 大多數(shù)數(shù)據(jù)庫的默認(rèn)隔離界別都是READ COMMITED(除了MySQL)
REPEATABLE READ(可重復(fù)讀)
? ? 保證了在同一個事務(wù)中多次讀取同樣的記錄的結(jié)果是一致的】韬迹可重復(fù)讀隔離級別無法解決另外一個幻讀的問題驯杜。所謂幻讀指的是當(dāng)某個事務(wù)在讀取某個范圍內(nèi)的記錄時,另外一個事務(wù)又在該范圍內(nèi)插入了新的記錄做个,當(dāng)之前的事務(wù)再次讀取該范圍的記錄時會產(chǎn)生幻行(phantom row)
? ? InnoDB和XtraDB存儲引擎通過多版本并發(fā)控制(MVCC鸽心,Multiversion Concurrency Control)解決了幻讀的嗯體
? ? 可重復(fù)讀是MySQL默認(rèn)事務(wù)隔離級別
SERIALIZABLE(可串行化)
????SERIALIZABLE是最高的隔離級別。它通過強(qiáng)制事務(wù)串行執(zhí)行居暖,避免了前面說的幻讀問題顽频。簡單來說,SERIALIZABLE會在讀取的每一行數(shù)據(jù)上都枷鎖太闺,所以可能導(dǎo)致大量的超時和鎖征用的問題糯景。實際應(yīng)用中很少使用到這個隔離級別。? ? ? ??