1. 程式人生 > >Mysql中事物及隔離級別

Mysql中事物及隔離級別

事務隔離界別 Mysql ACID

什麽叫事務

事務就是一組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

Mysql中事物及隔離級別