天天看點

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)可重新性,可 重複讀是最高的隔離級别,提供了最大程度的鎖定和最少的并行。産生結果集的所有行都會被鎖定,也就是說,即使不必出現在最終結果集中的行也會被鎖定。在此 該工作單元結束前,任何其它程式都不能修改,删除或插入一個會影響結果集的行。重複讀確定程式在一個工作單元中多次進行的同一項查詢都傳回結果。在一個事務中進行查詢時,不允許任何對這個查詢表的資料修改。

繼續閱讀