DB2併發性和事務隔離級別

2021-04-27 09:07:33 字數 955 閱讀 7289

1.當事務在多使用者環境中沒有彼此隔離時,將會產生以下三種後果:

1)髒讀

這種情況發生在乙個事務讀取還未提交的資料時。例如:

事務1改變了一行資料,而在事務1提交修改之前事務2讀取了事務1所改變的行的資料。如果事務1回滾了修改,那末事務2就讀取了實際上並不存在的資料。

2)不可重複讀

這種情況發生在事務兩次讀取同一行中的資料卻得到不同數值時。例如:

事務1讀取了一行資料,而事務2改變或刪除了那些行並提交了修改。如果事務1再次讀取了那一行,那麼,事務1就得到了不同的數值(如果那一行被更新)或發現那一行已不存在(如果那一行被刪除)。

3)幻影資料

這種情況發生在一行資料滿足搜尋規則,卻在開始沒有被看到時。

例如:事務1讀取了一系列滿足搜尋規則的行,而事務2插入了乙個滿足事務1搜尋規則的行。如果事務1再次執行查詢語句,就會得到不同的一系列行。

在允許多個應用程式同時訪問同一資料時,應該保持資料庫的一致性和資料完整性。這稱為「併發」(concurrency)。

db2使用四個不同的事務隔離級別來實現併發。乙個隔離級別決定當資料被訪問時,如何鎖定資料或讓資料與其他程序隔離。db2支援以下隔離級別:

·可重複讀

·讀穩定性

·游標穩定性

·未提交讀

2.隔離級別

與應用程式程序相關聯的隔離級別定義了程序與其他併發執行的應用程式程序相隔離的等級。隔離級別被指定為應用程式程序使用的包的屬性。包(package)是在執行 bind、precompile 或 rebind 命令期間建立的資料庫物件,其中包含 sql 編譯器輸出,並用於執行 sql 語句。在您預編譯(準備)應用程式時,或者將應用程式繫結到資料庫時,可以指定乙個適當的隔離級別。

db2 udb 支援以下隔離級別:

DB2事務隔離級別

select from tablename where id 1with ur4 rr repeatable read 可重新性,可 重複讀是最高的隔離級別,提供了最大程度的鎖定和最少的並行。產生結果集的所有行都會被鎖定,也就是說,即使不必出現在最終結果集中的行也會被鎖定。在此 該工作單元結束前,任...

db2 隔離級別

1.當事務在多使用者環境中沒有彼此隔離時,將會產生以下三種後果 1 髒讀 這種情況發生在乙個事務讀取還未提交的資料時。例如 事務1改變了一行資料,而在事務1提交修改之前事務2讀取了事務1所改變的行的資料。如果事務1回滾了修改,那末事務2就讀取了實際上並不存在的資料。2 不可重複讀 這種情況發生在事務...

DB2中事務的隔離級別

db2中事務的隔離級別分為 ur 未落實的讀 cs 游標穩定性 rs 讀穩定性 rr 可重複讀 事務中更改隔離級別的語句 connect reset change isolation to ur connect to testdb 以下為各級別的特點 1.ur下可能出現髒讀,他的隔離級別最低 該操作...