資料庫中事務併發問題

2021-10-10 05:34:16 字數 979 閱讀 3022

對於同時執行的多個事務,當這些事務訪問資料庫中相同的資料時,

如果沒有採取必要的隔離機制。就會導致各種併發問題:

資料庫事務的隔離性:

資料庫系統必須具有隔離併發執行各個事務的能力,

使它們不會互相影響,避免各種併發問題。

乙個事務與其他事務隔離的程度稱為隔離級別。

資料庫規定了多種事務隔離級別,不同隔離級別對應不同的干擾程度,

隔離級別越高,資料一致性就越好,但併發性越弱。

隔離級別

描述read uncommitted(讀未提交資料)

允許事務讀取未被其他事務提交的變更。髒讀,不可重複讀和幻讀的問題都會出現

read commited(讀已提交資料)

只允許事務讀取已經被其他事務提交的變更,可以避免髒讀,但不可重複讀和幻讀問題仍然存在

repeatable read(可重複讀)

確保事務可以多次從乙個欄位中讀取相同的值,在這個事務持續期間,禁止其他事務對於這個字段進行更新,可以避免髒讀和不可重複讀,但幻讀的問題仍然存在

serializable(序列化)

確保事務可以從乙個表中讀取相同的行,在這個事務持續期間,禁止其他事務對該錶執行插入,更新和刪除操作,所有併發問題都可以避免,但效能十分低下

oracle 支援2種事務隔離級別: read commited , serializable。

oracle預設的事務隔離級別為read commited。

mysql支援4種事務隔離級別。mysql預設的事務隔離級別為: repeatable read。

資料庫事務併發問題

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

資料庫事務併發問題

多個事務同時訪問資料庫時候,會發生下列5類問題,包括3類資料讀問題 髒讀,不可重複讀,幻讀 2類資料更新問題 第一類丟失更新,第二類丟失更新 1,髒讀 dirty read a事務讀取b事務尚未提交的更改資料,並在這個資料基礎上操作。如果b事務回滾,那麼a事務讀到的資料根本不是合法的,稱為髒讀。在o...

資料庫的事務和併發問題

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