DB2 V9新增了表分區功能,因此對一些大表,我們在DB2 V9中不再需要分拆成小表,再用UNION ALL視圖的方式進行設計,而是直接用分區表實現一些這些功能?表分區功能是一種數據組織方案,即,表數據根據一個或多個表列中的值分布到多個存儲對象(稱為數據分區或范圍)中?每個數據分區都是單獨存儲的?這些存儲對象可以在不同的表空間中,也可以在相同表空間中?由于表分區是DB2 V9新增的功能,所以很多用戶對其特性不是很了解,本文將重點介紹DB2 V9表分區功能,并通過實際的例子來幫助大家理解和提高?
簡介
在DB2 V9之前,對一些大表,出于對性能和數據容量限制的考慮,我們通常會把大表分拆成一些小表,再用UNION ALL 視圖的方式進行聯合起來?DB2 V9在數據容量方面有了重大突破,DMS 表空間的新缺省類型是“大型”,當使用“大型”DMS表空間時,單表的最大容量限制是16384G(Byte),而不再是以前的512 G(Byte)?DB2 V9新增了表分區功能,使得我們對大表的性能和數據容量的顧慮都不再存在?使用表分區,能夠創建非常大的表,通過跨多個存儲器對象劃分表數據,可顯著增大表,一個表最多可以有32K個數據分區?
使用表分區分隔數據能夠避免掃描不相關的數據,從而提高查詢處理性能?DB2優化器從查詢操作中去除不相關的分區?
表分區功能是一種數據組織方案,根據一個或多個表列中的值將表數據劃分到多個稱為數據分區或范圍的存儲對象中?
每個數據分區都是單獨存儲的?這些存儲器對象可位于不同的表空間和/或相同的表空間中?跨多個存儲器對象對表數據進行分區的能力為數據庫管理員提供了更高的可伸縮性和靈活性,同時提高了性能和控制能力?表分區可大幅度減少管理龐大數據庫所需的維護工作,并可有效增加單個表的潛在大小?表和索引自動重組的新策略選項使您能夠更有效地管理DB2服務器對表和索引的自動重組?表分區使您能夠定義表數據的范圍,以便單獨保存每個范圍?例如,您可基于表中的日期列,按月對表進行分區?每個范圍(稱為數據分區)與單個存儲器對象對應?這些存儲器對象可位于不同的表空間和/或相同的表空間中?由于可以對單個數據分區執行管理任務,將很耗時的維護操作分成一系列較小的操作來執行,從而使管理工作更為靈活?例如,可備份和復原單個數據分區而不是整個表?DB2 V9新增的表分區功能增強了對索引位置的細化控制,可將索引置于不同表空間并單獨管理它們?
使用 ALTER TABLE語句的 ATTACH PARTITION和DETACH PARTITION子句可進行快速及方便的數據轉入或轉出?此功能在數據倉庫環境中特別有用,在此環境中經常需要裝入或刪除數據以運行決策支持查詢?能夠將表分區與其他數據組織方案組合在一起?通過將表分區與數據分區功能(DPF)一起使用,可跨數據庫分區均勻地分布數據范圍,以利用 DPF 的查詢內并行性和數據庫分區負載均衡功能?將表分區與多維集群(MDC)一起使用時,能夠對同一表擴展數據塊中在多個維上具有類似值的行進行分組?
由于表分區是DB2 V9新增的功能,所以很多用戶對其特性不是很了解,本文將重點介紹DB2 V9表分區功能,并通過實際的例子來幫助大家理解和提高?
我們將按照下列順序介紹表分區:
1. 創建示例數據庫DB2TEST1,在示例數據庫上創建一個使用32K頁大小的緩沖池,創建3個DMS表空間,用來存放示例分區表的數據,創建3個大型表空間(DMS),用來存放示例分區表的大型數據,創建1個DMS表空間,用來存放示例分區表的索引
2. 使用自動方式創建示例分區表
3. 使用手工方式創建示例分區表
1