
read uncommitted? (未提交讀) 級別 事務(wù)中的修改,即使沒有提交,對其他事物也都是可見的。事務(wù)可以讀取未提交的數(shù)據(jù),這也被稱為臟讀。
read committed( 提交讀) 大多數(shù)數(shù)據(jù)庫默認(rèn)的隔離級別都是 read committed(但是MySql不是):一個(gè)事務(wù)開始時(shí),只能看見已經(jīng)提交的事務(wù)所做的修改. 一個(gè)事務(wù)從開始提到提交之前,所做的任何修改對其它的事務(wù)都是不可見的
repeatable read(可重復(fù)讀) 該級別保證了在同一個(gè)事務(wù)中多次讀取同樣記錄的結(jié)果是一致的。
但是理論上可重復(fù)讀還是無法解決另外一個(gè)幻讀問題,指的是當(dāng)某個(gè)事務(wù)在讀取某個(gè)范圍內(nèi)的記錄時(shí),另外一個(gè)事務(wù)又在該范圍內(nèi)插入了新的記錄,當(dāng)之前的實(shí)物再次讀取該范圍的記錄時(shí),會產(chǎn)生幻行.
serializable(可串行化)? 是最高的隔離級別。它通過強(qiáng)制事務(wù)串行執(zhí)行,避免了前面說的幻讀問題.
簡單來說,可串行化會在讀取的每一行數(shù)據(jù)上加上鎖,所以可能導(dǎo)致大量的超時(shí)和鎖爭用的問題。
實(shí)際應(yīng)用中也很少用到這個(gè)隔離級別,只有在非常需要確保數(shù)據(jù)的一致性且可以接受沒有并發(fā)的情況下,才考慮采用該級別。