數據併發存在的問題

1.髒讀

A事務讀取到B事務尚未提交的更改數據,並在這個數據的基礎上進行操作。如果恰巧B事務回滾,那麼A事務讀到的數據根本是不被承認的。

時間 轉賬事務A 轉賬事務B
T1 開始事務
T2 開始事務
T3 查詢賬戶餘額爲1000
T4 取出500,餘額改爲500
T5 查詢賬戶餘額爲500
T6 撤銷事務,餘額恢復1000
T7 匯入100,把餘額改爲600
T8 提交事務

2.不可重複讀

不可重複讀是指A事務讀取了B事務已經提交的更改數據。假設A在取款事務過程中,B往賬戶轉了100元,A兩次讀取賬戶的餘額發生不一致。

時間 取款事務A 轉賬事務B
T1 開始事務
T2 開始事務
T3 查詢賬戶餘額爲1000
T4 查詢賬戶餘額爲1000
T5 取出100,把餘額改爲900
T6 提交事務
T7 查詢賬戶餘額爲900(和T4查詢的不一致)

3.幻想讀

A事務讀取到B事務提交的新增數據,這時A事務將出現幻想讀的問題。幻想讀一般發生在計算統計數據的事務中。

時間 統計金額事務A 轉賬事務B
T1 開始事務
T2 開始事務
T3 統計總存款數爲1000
T4 新增一個存款賬戶,存入100
T5 提交事務
T6 統計總存款數爲1100

4.第一類丟失更新

A事務撤銷時,把已經提交的B事務的更新數據覆蓋了。

時間 取款事務A 轉賬事務B
T1 開始事務
T2 開始事務
T3 查詢賬戶餘額爲1000
T4 查詢賬戶餘額爲1000
T5 匯入100,把餘額改爲1100
T6 提交事務
T7 取出100,把餘額改爲900
T8 撤銷事務
T9 餘額恢復爲1000

5.第二類丟失更新

A事務覆蓋B事務已經提交的數據,造成B事務所做的操作丟失。

時間 轉賬事務A 取款事務B
T1 開始事務
T2 開始事務
T3 查詢賬戶餘額爲1000
T4 查詢賬戶餘額爲1000
T5 取出100,把餘額改爲900
T6 提交事務
T7 匯入100
T8 提交事務
T9 把餘額改爲1100
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章