事務特性 ACID:
(1)原子性(Atomicity)
一個事務由一系列操作組成,要么全部生效,要么全不生效,不存在部分生效的情況
(2)一致性(Consistency)
事務執行完成后,需要保證資料一致性,滿足業務規則,比如余額不能是負的
(3)隔離性(Isolation)
多個事務對同一資料的操作是隔離開的,不會相互干擾
(4)持久性(Durability)
事務執行成功后,將永久生效,即使資料庫故障或者宕機,也不會丟失已提交的資料
另外,Redis支持事務,但是只能保證隔離性和一致性,沒有原子性,也不會回滾
事務隔離級別
以下為事務隔離級別及可能導致的問題,對應事務隔離級別以下為該事務隔離級別下事務并發可能導致的問題(例如:讀已提交可能導致不可重復讀和幻讀問題):
事務隔離級別-讀未提交(READ UNCOMMITED):允許事務讀取到其他事務未提交的資料修改
臟讀:讀到未提交事務的資料,是最差的事務隔離級別,可以說沒有隔離,比如:事務1讀到事務2操作中但未提交的資料,事務2回滾了,事務1讀到了錯誤的資料,
事務隔離級別-讀已提交(READ COMMITED):事務只能讀取到其他事務提交后對資料的修改,即資料寫入加鎖,讀取不加鎖
不可重復讀:同一事務多次查詢,查詢到的內容不同,即同一事務多次查詢間隔中有其他事務修改了資料
事務隔離級別-可重復讀(REPEATABLE READ):同一事務多次讀取結果相同,在事務A讀取資料后不允許其他事務修改,直到事務A執行結束,即資料讀取加鎖,MySQL InnoDB引擎默認的事務隔離級別
幻讀:同一事務多次查詢,查詢到的資料條數不同,即同一事務多次查詢間隔有其他事務新增了資料
事務隔離級別-串行化(SERIALIZABLE):事務串行,且鎖住的不只是被操作的資料,因為需要防止幻讀,事務A讀取時,不允許事務B的曾,刪,改操作,讀加讀鎖(共享鎖),寫加寫鎖(獨占鎖)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/544062.html
標籤:MySQL
