DB2隔離級(jí)別--為落實(shí)的讀
作為DB2隔離級(jí)別之一,未落實(shí)的讀對(duì)于DB2數(shù)據(jù)庫非常重要,下文就為落實(shí)的讀級(jí)別進(jìn)行了詳細(xì)的敘述,希望可以使您對(duì)DB2隔離級(jí)別有更深入的認(rèn)識(shí)。
未落實(shí)的讀(UR)允許應(yīng)用程序訪問其他事務(wù)的未落實(shí)的更改。除非其他應(yīng)用程序嘗試刪除或改變?cè)摫?,否則該應(yīng)用程序也不會(huì)鎖定正讀取的行而使其他應(yīng)用程序不能訪問該行。對(duì)于只讀和可更新的游標(biāo),“未落實(shí)的讀”的工作方式有所不同。
只讀游標(biāo)可訪問大多數(shù)其他事務(wù)的未落實(shí)的更改。但是,當(dāng)該事務(wù)正在處理時(shí),正由其他事務(wù)創(chuàng)建或刪除的表、視圖和索引不能使用。其他事務(wù)的任何其他更改在落實(shí)或回滾前都可被讀取。
注: “未落實(shí)的讀”隔離級(jí)別下的可更新操作的游標(biāo)將按DB2隔離級(jí)別是游標(biāo)穩(wěn)定性的方式工作。
當(dāng)它使用隔離級(jí)別 UR 運(yùn)行程序時(shí),應(yīng)用程序可以使用DB2隔離級(jí)別 CS。發(fā)生這種情況的原因是因?yàn)樵趹?yīng)用程序中使用的游標(biāo)是模糊游標(biāo)。由于 BLOCKING 選項(xiàng),可以將模糊游標(biāo)升級(jí)為隔離級(jí)別 CS。BLOCKING 選項(xiàng)的缺省值是 UNAMBIG。這意味著將模糊游標(biāo)當(dāng)作可更新的,并且DB2隔離級(jí)別升級(jí)為 CS。要防止此升級(jí),有兩種選擇:
* 修改應(yīng)用程序中的游標(biāo)。以便這些游標(biāo)是非模糊游標(biāo)。將 SELECT 語句更改為包括 FOR READ ONLY 子句。
* 將模糊游標(biāo)保留在應(yīng)用程序中,但是預(yù)編譯程序或使用 BLOCKING ALL 和 STATICREADONLY YES 選項(xiàng)綁定它以允許在運(yùn)行該程序時(shí)將任何模糊游標(biāo)視為只讀游標(biāo)。
如對(duì)掃描 10000 行的“可重復(fù)讀”給出的示例一樣,如果使用“未落實(shí)的讀”,那么不需要任何行鎖定。
使用“未落實(shí)的讀”,可能出現(xiàn)不可重復(fù)讀行為和幻像讀現(xiàn)象?!拔绰鋵?shí)的讀”隔離級(jí)別最常用于只讀表上的查詢,或者若僅執(zhí)行選擇語句且不關(guān)心是否可從其他應(yīng)用程序中看到未落實(shí)的數(shù)據(jù)時(shí)也最常用。
【編輯推薦】