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