MySQL數據庫事務的隔離級別

1.READ UNCOMMITTED(未提交讀)

事務中的修改,即使沒有提交,對其他事務也都是可見的。
事務可以讀取未提交的數據,即髒讀(Dirty Read)。
實際應用中很少使用。

2.READ COMMITTED(提交讀)

一個事務從開始到提交之前,所做的任何修改對其他事務都是不可見的,有時也叫不可重複讀。

3.REPEATABLE READ(可重複讀)

是MySQL的默認事務隔離級別。
在同一事務中,多次讀取同樣記錄的結果是一致的。
無法解決幻讀(當某個事務在讀取某個範圍內的記錄時,另外一個事務又在該範圍內插入了新的記錄,當之前的事務再次讀取該範圍內的記錄時,會產生幻行。)的問題。
InnoDB通過多版本併發控制解決了幻讀的問題。

4.SERIALIZABLE(可串行化)

是最高的隔離級別。它通過強制事務串行執行,避免了幻讀的問題

隔離級別 髒讀可能性 不可重複讀可能性 幻讀可能性 加鎖讀
READ UNCOMMITTED YES YES YES NO
READ COMMITTED NO YES YES NO
REPEATABLE READ NO NO YES NO
SERIALIZABLE NO NO NO YES
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章