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

2021-07-28 18:40:45 字數 637 閱讀 1807

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

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

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

不可重複讀指的是事務t1讀取資料後,事務t2執行更新操作,使t1無法再現前一次讀取的結果。

分為以下三種情況:

(1)事務t1讀取了某一資料後,事務t2對其做了修改,當事務t1再次讀資料時,得到了與前一次不同的值。

(2)事務t1讀取了某一資料後,事務t2刪除了其中的記錄,當事務t1再次讀資料時,發現某些記錄神秘消失了。

(3)事務t1讀取了某一資料後,事務t2插入了一些新的記錄,當事務t1再次讀資料時,發現多了一些記錄。

後兩種操作叫做幻影現象。

讀「髒」資料只得是事務t1修改了某一資料,並將其寫回磁碟,事務t2讀取某一資料後,t1由於某種原因撤銷了操作,恢復原值,這時t2讀到的資料就和資料庫中的資料不一致,稱為讀「髒」資料。

產生以上三種現象的原因是併發操作破壞了事務的隔離性。為了應對這些資料不一致性,主要技術主要有:封鎖,時間戳,樂觀控制法。

高併發快取資料庫不一致

在一般的 的架構中,我們都會採用快取架構來抗住高併發場景下的讀請求。那麼對於寫請求,先更新快取還是先更新資料庫?本文以商品庫存資訊為例,我們展開討論,假設剛開始資料庫庫存 100,快取中庫存 100.1.先更新資料庫,後更新快取 這種情況下,當需要更新庫存的時候,先更新資料庫中的庫存 99,然後再更...

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

髒讀 就是指當乙個事務對資料進行了修改但還沒有提交到資料庫時,另乙個事務訪問並使用了這個資料。不可重複讀 在乙個事務內兩次讀資料之間,第二個事務訪問該資料並進行了修改。丟失修改 兩個事務讀入同一資料並修改,t2提交的結果破壞了t1提交的結果。例如t1讀a修改為a 1,t2也讀a修改為a 1 實際上應...

併發操作導致資料庫不一致性

主要是一致性問題.常見併發併發一致性問題包括 丟失的修改 不可重複讀 讀髒資料 幻影讀 幻影讀在一些資料中往往與不可重複讀歸為一類 答案補充 不可重複讀是指事務t1讀取資料後,事務t2執行更新操作,使t1無法再現前一次讀取結果.具體地講,不可重複讀包括三種情況 事務t1讀取某一資料後,事務t2對其做...