1. 程式人生 > >資料庫併發操作帶來的資料不一致性

資料庫併發操作帶來的資料不一致性

事務是併發控制的基本單位,保證事務的ACID特性是事務處理的重要任務,而事務ACID特性可能遭到破壞的原因之一就是多個事務對資料庫的併發操作造成的。

併發操作帶來的資料不一致性重要有丟失修改,不可重複讀,讀“髒”資料。

1.丟失修改

兩個事務T1和T2讀入同一個資料並修改,T2提交的結果破壞了T1提交的結果,導致了T1的修改被丟失。典型例子:買飛機票或者火車票的例子。

2.不可重複讀

不可重複讀指的是事務T1讀取資料後,事務T2執行更新操作,使T1無法再現前一次讀取的結果。 分為以下三種情況: (1)事務T1讀取了某一資料後,事務T2對其做了修改,當事務T1再次讀資料時,得到了與前一次不同的值。 (2)事務T1讀取了某一資料後,事務T2刪除了其中的記錄,當事務T1再次讀資料時,發現某些記錄神祕消失了。 (3)事務T1讀取了某一資料後,事務T2插入了一些新的記錄,當事務T1再次讀資料時,發現多了一些記錄。
後兩種操作叫做幻影現象。

3.讀“髒”資料

讀“髒”資料只得是事務T1修改了某一資料,並將其寫回磁碟,事務T2讀取某一資料後,T1由於某種原因撤銷了操作,恢復原值,這時T2讀到的資料就和資料庫中的資料不一致,稱為讀“髒”資料。 產生以上三種現象的原因是併發操作破壞了事務的隔離性。為了應對這些資料不一致性,主要技術主要有:封鎖,時間戳,樂觀控制法。