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