MySql學習筆記(ACID、隔離級別)

ACID

原子行(atomicity)

一個事務中的所有操作要麼全成功,要麼全部失敗回滾

一致性(consistency)

從一個一致性狀態轉到另一個一致性的狀態
在事務執行過程中出現系統崩潰等狀態,表中信息也不會有所改變,因爲沒有被提交

隔離性(isolation)

當一個事務所做的修改在最終提交以前,對其他事務是不可見的。

持久性(durability)

當事務一旦被提交,就會永久的保存在數據庫中

隔離級別

READ UNCOMMITTED(未提交讀/髒讀)

在該級別中,對事務中的內容進行修改,即使是沒有提交,對其他事務也都是可見的,這樣會出現髒讀的情況

READ COMMITTED(提交讀/不可重複讀)

一個事務開始時,只能“看見”已經提交的事務所做的修改
例如一個事務A開始讀某一個表是一條數據,另一個事務B對這個表增加一條數據,並且提交。這時事務A再查找會發現兩條數據。那麼第一個事務A兩次讀到的的數據可能是不一樣的,因此稱爲是不可重複讀

REPEATABLE READ(可重複讀)

該級別保證了在同一個事務中多次讀取同樣記錄的結果是一致的

SERIALIZABLE(可串行化)

最高級別,通過強制事務串行執行,避免了幻讀,會在讀取的每一行數據上都加鎖,所以可能導致大量的超時和鎖爭用問題

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