DB2隔離級(jí)別之讀穩(wěn)定性
DB2中的讀穩(wěn)定性是每一個(gè)DBA都需要掌握的知識(shí),它保證了不可能出現(xiàn)“不可重復(fù)讀”情形,值得我們仔細(xì)去研究學(xué)習(xí)。
讀穩(wěn)定性(RS)只鎖定應(yīng)用程序在工作單元中檢索的那些行。它確保在某個(gè)工作單元完成之前,在該工作單元運(yùn)行期間的任何限定行讀取不被其他應(yīng)用程序進(jìn)程更改,且確保不會(huì)讀取由另一個(gè)應(yīng)用程序進(jìn)程所更改的任何行,直至該進(jìn)程落實(shí)了這些更改。也就是說(shuō),不可能出現(xiàn)“不可重復(fù)讀”情形。
與可重復(fù)讀不同,使用“讀穩(wěn)定性”時(shí),如果您的應(yīng)用程序多次發(fā)出相同的查詢,那么有可能看到附加的幻像行(幻像讀現(xiàn)象)。重新引用掃描 10000 行的示例時(shí),“讀穩(wěn)定性”只鎖定限定的行。這樣,使用“讀穩(wěn)定性”時(shí),只檢索 10 行,且只對(duì)那十行掛起鎖定。將它與“可重復(fù)讀”對(duì)比,在本示例中,可重復(fù)讀會(huì)在所有的 10000 行上掛起鎖定。掛起的鎖定可以是共享、下次共享、更新或互斥鎖定。
注: “讀穩(wěn)定性”DB2隔離級(jí)別確保在應(yīng)用程序看到數(shù)據(jù)之前所有返回的數(shù)據(jù)保持不變,即使使用了臨時(shí)表或行分塊也是如此。
“讀穩(wěn)定性”DB2隔離級(jí)別的其中一個(gè)目標(biāo)是提供較高并行性程度以及數(shù)據(jù)的穩(wěn)定視圖。為了有助于達(dá)到此目標(biāo),優(yōu)化器確保在發(fā)生鎖定升級(jí)前不獲取表級(jí)鎖定。
“讀穩(wěn)定性”DB2隔離級(jí)別最適用于包括下列所有特征的應(yīng)用程序:
* 在并發(fā)環(huán)境下運(yùn)行
* 需要限定某些行在工作單元運(yùn)行期間保持穩(wěn)定
* 在工作單元中不會(huì)多次發(fā)出相同的查詢,或者在同一工作單元中發(fā)出多次查詢時(shí)并不要求該查詢獲得相同的回答。
【編輯推薦】