作為DB2隔離級別之一,未落實的讀對於DB2數據庫非常重要,下文就為落實的讀級別進行了詳細的敘述,希望可以使您對DB2隔離級別有更深入的認識。
未落實的讀UR)允許應用程序訪問其他事務的未落實的更改。除非其他應用程序嘗試刪除或改變該表,否則該應用程序也不會鎖定正讀取的行而使其他應用程序不能訪問該行。對於只讀和可更新的游標,“未落實的讀”的工作方式有所不同。
只讀游標可訪問大多數其他事務的未落實的更改。但是,當該事務正在處理時,正由其他事務創建或刪除的表、視圖和索引不能使用。其他事務的任何其他更改在落實或回滾前都可被讀取。
注: “未落實的讀”隔離級別下的可更新操作的游標將按DB2隔離級別是游標穩定性的方式工作。
當它使用隔離級別 UR 運行程序時,應用程序可以使用DB2隔離級別 CS。發生這種情況的原因是因為在應用程序中使用的游標是模糊游標。由於 BLOCKING 選項,可以將模糊游標升級為隔離級別 CS。BLOCKING 選項的缺省值是 UNAMBIG。這意味著將模糊游標當作可更新的,並且DB2隔離級別升級為 CS。要防止此升級,有兩種選擇:
* 修改應用程序中的游標。以便這些游標是非模糊游標。將 SELECT 語句更改為包括 FOR READ ONLY 子句。
* 將模糊游標保留在應用程序中,但是預編譯程序或使用 BLOCKING ALL 和 STATICREADONLY YES 選項綁定它以允許在運行該程序時將任何模糊游標視為只讀游標。
如對掃描 10000 行的“可重復讀”給出的示例一樣,如果使用“未落實的讀”,那麼不需要任何行鎖定。
使用“未落實的讀”,可能出現不可重復讀行為和幻像讀現象。“未落實的讀”隔離級別最常用於只讀表上的查詢,或者若僅執行選擇語句且不關心是否可從其他應用程序中看到未落實的數據時也最常用。
DB2動態SQL的使用
DB2循環查詢的實現
DB2數據倉庫產品簡介
DB2分頁的實現
DB2游標及其使用