DB2 執行Sql 語句中時的with  ur/cs/rs/rr四種隔離級別

xiaofei_sun發表於2020-11-30

DB2 執行Sql 語句中時的四種隔離級別

with  ur

 

這幾天查詢DB2資料庫,老遇到select * from XXX with ur, 好奇ur是什麼作用,現在記錄一下。

 

DB2中,共有四種隔離級:RS,RR,CS,UR,DB2提供了這4種不同的保護級別來隔離資料。隔離級是影響加鎖策略的重要環節,它直接影響加鎖的範圍及鎖的持續時間。兩個應用程式即使執行的相同的操作,也可能由於選擇的隔離級的不同而造成加鎖的結果不同。
1、ur(Uncommited Read) 就是俗稱“髒讀“,在沒有提交資料的時候能夠讀到更新的資料;是最低的隔離級別,並且提供最高的並行性。
2、cs(Cursor Stability) 在一個事務中進行查詢時,允許讀取提交前的資料,資料提交後,當前查詢就可以讀取到資料,update資料的時候並不鎖表,在這一隔離級別中,遊標的“當前”行是鎖定的。如果該行只是被讀,鎖定會一直持續到一個新行被訪問或者該工作單元終止。如果該行被修改,鎖定會一直持續到該工作單元終止。
3、rs(Read Stability)讀穩定性,在一個事務中進行查詢時,不允許讀取其他事務update的資料,允許讀取到其他事務提交的新增資料,使用讀穩定性,在同一個工作單元中的一個程式程式所檢索的全部行都會被鎖定。對於一個給定的遊標,它要鎖定所有與結果集匹配的行,例如,如果你有一個含1000行的表並且查詢返回10行,那麼只有那10行會被鎖定。讀穩定性使用中等級別的鎖定。
4、rr(Repeatable Read)可重新性,可 重複讀是最高的隔離級別,提供了最大程度的鎖定和最少的並行。產生結果集的所有行都會被鎖定,也就是說,即使不必出現在最終結果集中的行也會被鎖定。在此 該工作單元結束前,任何其它程式都不能修改,刪除或插入一個會影響結果集的行。重複讀確保程式在一個工作單元中多次進行的同一項查詢都返回結果。在一個事務中進行查詢時,不允許任何對這個查詢表的資料修改。

相關文章