Mysql中事物及隔離級別
阿新 • • 發佈:2018-02-28
事務隔離界別 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中事物及隔離級別