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