資料庫併發一致性的問題
阿新 • • 發佈:2018-12-27
在併發環境下,事務的隔離性很難保證,因此會出現很多併發一致性問題。
使用隔離級別來防止產生的併發一致性問題
1)丟失修改
2) 讀髒資料
3)不可重複讀
即每次讀取的結果可能不一致
4)幻影讀
舉個栗子:系統管理員A將資料庫中所有學生的成績從具體分數改為ABCDE等級,但是系統管理員B就在這個時候插入
了一條具體分數的記錄,當系統管理員A改結束後發現還有一條記錄沒有改過來,就好像發生了幻覺一樣,這就叫幻讀。
不可重複讀和幻影讀其實是本質一樣的!不可重複讀是針對單個數據!幻影讀是針對一個範圍內的資料
丟失修改
T1 和 T2 兩個事務都對一個數據進行修改,T1 先修改,T2 隨後修改,T2 的修改覆蓋了 T1 的修改。
讀髒資料
T1 修改一個數據,T2 隨後讀取這個資料。如果 T1 撤銷了這次修改,那麼 T2 讀取的資料是髒資料。
不可重複讀
T2 讀取一個數據,T1 對該資料做了修改。如果 T2 再次讀取這個資料,此時讀取的結果和第一次讀取的結果不同。
幻影讀
T1 讀取某個範圍的資料,T2 在這個範圍內插入新的資料,T1 再次讀取這個範圍的資料,此時讀取的結果和和第一次讀取的結果不同。
產生併發不一致性問題主要原因是破壞了事務的隔離性,解決方法是通過併發控制來保證隔離性。併發控制可以通過封鎖來實現,但是封鎖操作需要使用者自己控制,相當複雜。資料庫管理系統提供了事務的隔離級別,讓使用者以一種更輕鬆的方式處理併發一致性問題。