事物的基本概念,附圖示

來源

《數據庫系統原理》

 

併發操作問題

  事務是併發操作的基本單位,保證事務的ACID特徵是事務處理的重要任務,而事務的ACID特徵可能遭到破壞的原因之一是多個事務對數據庫的併發操作造成的。爲了保證事務的隔離性和一致性,DBMS需要對併發操作進行正確調度。其中完整性校驗可以保證一個事務單獨執行時,若輸入的數據庫狀態是正確的,則其輸出的數據庫狀態也是正確的,但當多個事務交錯執行時,可能出現不一致的問題,這也稱爲併發操作問題,典型的有如下三種:丟失更新、不可重複讀和讀”髒“數據。

  (1)丟失更新

  設有兩個事務T1和T2,當它們同時讀入同一數據並加以修改時,事務T2的提交結果會破壞事務T1的提交的結果,由此導致事務T1的修改丟失。這就是一種由於對數據的併發操作而帶來的數據不一致。

 

  (2)不可重複讀

  設有兩個事務T1和T2,不可重複讀是指事務T1讀取事務後,事務T2執行更新操作,使事務T1無法再現前一次讀取的結果。通常,不可重複讀包括三種情況。

    i)事務T1讀取某一數據後,事務T2對其做了修改,當事務T1再次讀該數據時,得到與前一次不同的值。

    ii)事務T1按一定的條件從數據庫中讀取某些數據後,事務T1刪除了其中部分記錄,當事務T1再次按相同條件讀取數據時,發現某些記錄神祕的消失了。

    iii)事務T1按一定的條件從數據庫中讀取某些記錄後,事務T2插入了一些記錄,當事務T1再次按相同條件讀取數據時,發現多了一些記錄。

  (3)讀”髒“數據

   設有兩個事務T1和T2,讀”髒“數據是指,事務T1修改了某一數據,並將其寫回磁盤,事務T2讀取同一數據後,事務T1由於某種原因被撤銷,這時事務T1已經修改過的數據恢復原值,事務T2讀到的數據,就與數據庫中的數據不一致,則事務T2讀到的數據就爲‘’髒‘數據,即不正確的數據。

  產生上述三類數據不一致的主要原因是併發操作破壞了事務的隔離性,併發控制機制就是要用正確的方式調度併發操作,使一個用戶事務的執行不受其他事務的干擾,從而避免造成數據的不一致。

  解決併發操作所帶來的數據不一致問題的方法有封鎖、時間戳、樂觀控制法和多版本併發控制等。本節接下來主要介紹封鎖方法,這也是衆多數據庫產品採用的基本方法。  

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