資料庫事務併發問題

2021-09-01 16:41:03 字數 815 閱讀 8414

多個事務同時訪問資料庫時候,會發生下列5類問題,包括3類資料讀問題(髒讀,不可重複讀,幻讀),2類資料更新問題(第一類丟失更新,第二類丟失更新):

1,髒讀(dirty read)

a事務讀取b事務尚未提交的更改資料,並在這個資料基礎上操作。如果b事務回滾,那麼a事務讀到的資料根本不是合法的,稱為髒讀。在oracle中,由於有version控制,不會出現髒讀。

2,不可重複讀(unrepeatable read)

a事務讀取了b事務已經提交的更改(或刪除)資料。比如a事務第一次讀取資料,然後b事務更改該資料並提交,a事務再次讀取資料,兩次讀取的資料不一樣。

3,幻讀(phantom read)

a事務讀取了b事務已經提交的新增資料。注意和不可重複讀的區別,這裡是新增,不可重複讀是更改(或刪除)。這兩種情況對策是不一樣的,對於不可重複讀,只需要採取行級鎖防止該記錄資料被更改或刪除,然而對於幻讀必須加表級鎖,防止在這個表中新增一條資料。

4,第一類丟失更新

a事務撤銷時,把已提交的b事務的資料覆蓋掉。這種錯誤會造成非常嚴重的後果。

5,第二類丟失更新

a事務提交時,把已提交的b事務的資料覆蓋掉。這種錯誤會造成非常嚴重的後果。

資料庫通過鎖機制解決資料併發問題。

ansi sql 92標準定義了4個等級的事務隔離級別:

read uncommitted、read committed、repeatable read、serializable

sql 92 推薦使用repeatable read 保證資料的讀一致性。

本人部落格已搬家,新位址為:

資料庫事務併發問題

乙個資料庫可能擁有多個訪問客戶端,這些客戶端都可以併發方式訪問資料庫。資料庫中的相同資料可能同時被多個事務訪問,如果沒有採取必要的隔離措施,就會導致各種併發問題,破壞資料的完整性。這些問題可以歸結為 5類,包括 3類資料讀問題 髒讀 幻象讀和不可重複讀 以及 2類資料更新問題 第一類丟失更新和第二類...

資料庫中事務併發問題

對於同時執行的多個事務,當這些事務訪問資料庫中相同的資料時,如果沒有採取必要的隔離機制。就會導致各種併發問題 資料庫事務的隔離性 資料庫系統必須具有隔離併發執行各個事務的能力,使它們不會互相影響,避免各種併發問題。乙個事務與其他事務隔離的程度稱為隔離級別。資料庫規定了多種事務隔離級別,不同隔離級別對...

資料庫的事務和併發問題

事務 transaction 是併發控制的基本單位。所謂的事務,它是乙個操作序列,這些操作要麼全部執行,要麼全部都不執行。比如,銀行轉賬,從乙個賬號扣錢,然後另乙個賬號餘額增加,這兩個操作要麼都執行,要麼都不執行。這兩個操作組合在一起就是事務。資料庫事務有嚴格的定義,它必須同時滿足4個特性 原子性,...