數據庫事務及隔離級別

數據庫事務

四大特性

原子性 隔離性 持久性 一致性

原子性

一個事務的多個數據庫操作是一個不可分割的原子單元,只有所有的操作執行成功,整個事務才提交。

一致性

事務操作成功後,數據庫所處的狀態和他的業務規則是一致的,即數據不會被破壞。如A賬戶轉賬100元到B賬戶,不管操作成功與否,A和B賬戶的存款總額是不變的。

隔離性

事務之間有一定的隔離級別,保障不同程度的數據一致性。

持久性

一旦事務提交成功後,事務中所有的數據都被持久化到數據庫中。

隔離帶來的問題及對應的解決級別

  • 丟失更新

    第一類
    在這裏插入圖片描述
    最低的隔離級別Read uncommited即可防止此問題,對應一級封鎖協議是:事務T在修改數據R之前必須先對其加X鎖,直到事務結束才釋放。事務結束包括正常結束(COMMIT)和非正常結束(ROLLBACK)。
    第二類

在這裏插入圖片描述
此類問題只能通過可以通過樂觀鎖或悲觀鎖進行控制。

  • 髒讀

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-k8wiVjy8-1583551659525)(images\髒讀.png)]
    髒讀的解決方案:設置隔離級別爲讀已提交。對應的封鎖協議:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完後即可釋放S鎖(瞬間S鎖)。

  • 不可重複讀

在這裏插入圖片描述
不可重複讀的解決方案:設置隔離級別爲可重複讀。對應的封鎖協議:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。

  • 幻讀

在這裏插入圖片描述
幻讀的解決方案:序列化。它要求事務序列化執行,事務只能一個接着一個地執行,但不能併發執行。

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