原子性(Atomicity):一個事務必須被視爲一個不可分割的最小工做希望,整個事務中的全部操做要麼所有提交成功,要麼所有失敗回滾,對於一個事務來講,不可能只執行其中的一部分操做數據庫
一致性(Consistency):數據庫老是從一個一致性的狀態轉換到另外一個一致性的狀態。併發
隔離性(Isolation):一個事務所作的修改在最終提交之前,對其餘事務是不可見的。同一時間,只容許一個事務請求同一數據,不一樣的事務之間彼此沒有任何干擾。性能
持久性(Durability):一旦事務提交,事務對數據庫的全部更新將被保存到數據庫,不能回滾。code
髒讀:事務讀取了未提交的數據。如:事務A讀取了事務B更新的數據,而後事務B回滾了,那麼A讀取到的數據是髒數據。排序
不可重複讀:在同一個事務中兩次執行一樣的查詢,獲得的結果不一致。如:事務 A 屢次讀取同一數據,事務 B 在事務A屢次讀取的過程當中,對數據做了更新並提交,致使事務A屢次讀取同一數據時,結果 不一致。事務
幻讀:當某個事務在讀取某個範圍內的記錄時,另外一個事務又在該範圍內插入了新的記錄,當以前的事務再次讀取該範圍的記錄時,會產生幻行。InnoDB能夠經過多版本併發控制(MVCC)解決幻讀的問題。ci
READ UNCOMMITTED(未提交讀):一個事務中的修改操做即便沒有提交,對其餘事務也都是可見的。會出現髒讀的問題it
READ COMMITTED(提交讀):一個事務開始時,只能「看見」已經提交的事務所作的修改。解決了髒讀的問題,可是會存在不可重複讀的問題io
REPEATABLE READ(可重複讀):一個事務在屢次讀取一樣記錄時,結果是一致的。解決了髒讀和不可重複讀的問題,可是沒法解決幻讀的問題table
SERIALIZABLE(可串行化):在讀取的每一行數據上都加鎖,經過強制事務串行執行的方式,避免了髒讀、不可重複讀和幻讀的問題,可是性能差
隔離級別 | 髒讀可能性 | 不可重複讀可能性 | 幻讀可能性 | 加鎖讀 |
---|---|---|---|---|
讀未提交(read-uncommitted) | Yes | Yes | Yes | No |
不可重複讀(read-committed) | No | Yes | Yes | No |
可重複讀(repeatable-read) | No | No | Yes | No |
可串行化(serializable) | No | No | No | Yes |
REPEATABLE-READ
,能夠經過show variables like 'transaction_isolation';
命令查看