事物的基本概念,附圖示

來源

《數據庫系統原理》數據庫

 

併發操做問題

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

  (1)丟失更新blog

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

 

  (2)不可重複讀產品

  設有兩個事務T1和T2,不可重複讀是指事務T1讀取事務後,事務T2執行更新操做,使事務T1沒法再現前一次讀取的結果。一般,不可重複讀包括三種狀況。原理

    i)事務T1讀取某一數據後,事務T2對其作了修改,當事務T1再次讀該數據時,獲得與前一次不一樣的值。方法

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

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

  (3)讀」髒「數據數據

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

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

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

相關文章
相關標籤/搜索