(4)數(shù)據(jù)庫并發(fā)
DB2在做數(shù)據(jù)修改時,在日志中既記錄了修改前的數(shù)據(jù)(也就是UNDO日志),也記錄了修改后的數(shù)據(jù)(即REDO日志)。對于DB2 V9.7之前的版本,讀取數(shù)據(jù)的應(yīng)用程序,遇到正在被其他應(yīng)用程序修改的數(shù)據(jù)時,將會進行鎖等待(除非使用UR隔離級別)。對于DB2 V9.7及以后版本,由于引入了當(dāng)前已落實,讀取數(shù)據(jù)的應(yīng)用程序?qū)⒉恍枰却i釋放,而是會從日志中讀取數(shù)據(jù)修改前的版本。當(dāng)請求加鎖時,DB2會檢查鎖列表,看數(shù)據(jù)對象上是否已加鎖,以及請求的鎖與已加的鎖是否兼容。DB2強調(diào)“讀一致性”,在讀數(shù)據(jù)行時,會根據(jù)隔離級別的不同而加S或IS鎖,只有在使用UR隔離級別時才不加S或IS鎖,這保證了不同應(yīng)用程序和用戶讀取的數(shù)據(jù)是一致的。DB2缺省的隔離級是CS,對于大多數(shù)應(yīng)用來說,缺省的CS級別可以滿足需要。DB2在UR隔離級別下,遇到正在被更改的數(shù)據(jù)會讀最新的沒有提交的臟數(shù)據(jù)。