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