1. 程式人生 > >資料庫併發存在的四種問題描述

資料庫併發存在的四種問題描述

1.更新丟失問題

A和B都對資料庫中的某個欄位進行讀寫操作。

A、B首先讀取資料,B讀取資料的時刻是在A寫入資料之前,這個時候B讀取的是A修改之前的資料,A接著對資料進行寫操作,B在A寫入資料後再對資料寫入,這個時候,A對資料的寫入被B的寫入覆蓋掉了。

假設最初資料是2,A和B讀取的都是2,A對資料減操作,2-2=0,寫入資料變成了0,B接著寫入資料,對資料進行加5,2+5=7,最後的結果變成了7.

然而,本該出現的是2-2+5=5.結果A對資料的操作丟失了。這叫資料更新丟失。

2.資料的髒讀

A對資料進行寫操作,B僅對資料進行讀操作。A對資料寫入,寫入後事務出現故障,需要回滾,但在回滾前恰好B讀取了資料,這個時候B讀取的資料屬於臨時資料,由於A的事務需要回滾,所以B讀取的資料並不會被儲存到資料庫,造成讀取錯誤資料的現象。

假如初始資料是1,A對其修改為2,B在A出現故障前讀取到B修改的資料2,但是A事務出現故障,需要回滾,回滾到原來的1,這時候B讀取的2就是錯誤的資料,這就是髒讀。

3.錯誤求和

A讀取資料庫中的資料,B在A讀取過程中操作資料,A讀到的是部分更新前和部分更新後的資料,這樣進行求和操作的時候,出現的是不完全更新的資料。

4.不可重複讀

類似錯誤求和,A兩次對同一條資料進行讀取,兩次讀取期間B對資料進行了更新,導致A前後兩次讀取到不同的資料。