DB2 V8中引入的MDC
本文將為您介紹DB2 V8 中引入的MDC表,在MDC表中,塊映射(block map)會(huì)跟蹤屬于這個(gè)表的所有擴(kuò)展數(shù)據(jù)塊,并且指示哪些塊或擴(kuò)展數(shù)據(jù)塊上包含數(shù)據(jù)以及哪些塊或擴(kuò)展數(shù)據(jù)塊上沒(méi)有包含數(shù)據(jù)
MDC 是在 DB2 V8 中引入的,通過(guò)它可以在物理上將在多個(gè)維上具有類似值的行聚集在一起放在磁盤上。這種聚集能為常見(jiàn)分析性查詢提供高效的 I/O。例如對(duì)于 Product=car,Region=East,并且 SaleMonthYear = Jan09 的所有行,可以將它們存儲(chǔ)在相同的存儲(chǔ)位置,即所謂的塊(block)。一個(gè)塊的大小等于表空間的擴(kuò)展數(shù)據(jù)塊(extent)大小,擴(kuò)展數(shù)據(jù)塊是磁盤上的一組連續(xù)頁(yè),所以將這些具有類似值的行在物理上是存放在連續(xù)的數(shù)據(jù)頁(yè)上。了解 MDC 相關(guān)內(nèi)容和細(xì)節(jié),可以查看 DB2 9.7 信息中心的“多維集群表”。
在 MDC 表中,塊映射(block map)會(huì)跟蹤屬于這個(gè)表的所有擴(kuò)展數(shù)據(jù)塊,并且指示哪些塊或擴(kuò)展數(shù)據(jù)塊上包含數(shù)據(jù)以及哪些塊或擴(kuò)展數(shù)據(jù)塊上沒(méi)有包含數(shù)據(jù)。包含數(shù)據(jù)的塊標(biāo)記為“正在使用”(“IN USE”)。每當(dāng)發(fā)生刪除或轉(zhuǎn)出時(shí),相應(yīng)的塊條目不再標(biāo)記為“正在使用”,而是被釋放以供 MDC 表復(fù)用。但是表空間中的其他對(duì)象無(wú)法使用這些擴(kuò)展數(shù)據(jù)塊。
可以通過(guò)重組 MDC 表來(lái)從 MDC 表釋放這些可用數(shù)據(jù)擴(kuò)展數(shù)據(jù)塊。在 DB2 9.7 之前只能在完全脫機(jī)的情況進(jìn)行重組,在 DB2 9.7 中開(kāi)始支持聯(lián)機(jī)對(duì) MDC 進(jìn)行重組以釋放擴(kuò)展數(shù)據(jù)塊。DB2 9.7 中的 REORG TABLE 命令增加了 RECLAIM EXTENTS ONLY 選項(xiàng),可以使用這個(gè)選項(xiàng)來(lái)釋放 MDC 表專用的擴(kuò)展數(shù)據(jù)塊,并且使該空間可供表空間內(nèi)其他數(shù)據(jù)庫(kù)對(duì)象使用。該選項(xiàng)還允許控制在釋放擴(kuò)展數(shù)據(jù)塊期間對(duì) MDC 表的并行訪問(wèn),寫訪問(wèn)權(quán)限為缺省訪問(wèn)權(quán)限,還可選擇讀訪問(wèn)權(quán)限和無(wú)訪問(wèn)權(quán)限來(lái)控制并行訪問(wèn)。
除了使用 REORG TABLE 命令來(lái)釋放擴(kuò)展數(shù)據(jù)塊,也可以使用 db2Reorg API 來(lái)回收擴(kuò)展數(shù)據(jù)塊。
另外,從 MDC 表釋放擴(kuò)展數(shù)據(jù)塊只支持在 DMS 表空間。