Mysql中事物及隔離級別

什麼叫事務
事務就是一組sql組成的操作單元,要麼操作全部成功,要麼全部失敗。

ACID屬性
原子性(atomicity)
一個事物必須被視爲一個不可分割的最小工作單元,整個事務要麼全部成功,要麼全部失敗回滾,對一個事物來說,不可能只執行其中的一部分操作。

一致性(consistency)
數據庫總是從一個一致的狀態轉換到另外一個一致的狀態。比如總共兩個update,在第一個update後,系統崩潰了,也不會對數據有影響,因爲事務沒提交。

隔離性(isolation)
一個事務所做的修改在最終提交以前,對其他事務是不可見。

持久性(durability)
一旦事務提交,則所做的修改就會永久保存到數據庫中。

事務隔離級別
併發事務帶來的問題:

髒讀
事務可以讀取未提交的數據,叫髒讀。
不可重複讀
一個事務開始時,只能讀取已經提交事務所做的修改。換句話說,一個事務從開始直到提交之前,所做的任何修改對其他事務都是不可見的。執行兩次同樣的查詢,可能會得到不一樣的結果。
幻讀
是指當某個事務讀取某個範圍內的記錄時,另外一個事務在該範圍內插入了新的記錄,當之前的事務再次讀取該範圍的記錄時,會產生幻行。
隔離級別 髒讀可能性 不可重複讀可能性 幻讀可能性
read uncommitted Yes Yes No
read committed No Yes Yes
repeatable read No No Yes
serializable No No No

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章