此文章主要向大家描述的是DB2 V9.7 分區索引新特性之改進大型數據庫的實際操作性能的描述,其中主要包括如何正確的使用與管理分區索引,還有分區索引改進大型數據庫性能的實際操作步驟。
簡介
分區索引partitioned index)是 DB2 V9.7 中的新特性,在本文中將介紹什麼是分區索引,如何創建和管理DB2 V9.7 分區索引,分區索引如何改進大型數據庫性能,讀者將獲得對分區索引的第一手體驗。每個DB2 V9.7 分區索引由多個索引分區index partition)組成,每個索引分區只對相應的數據分區data partition)的數據作索引。
開始之前
在開始討論分區索引之前我們有必要復習一下 DB2 的表分區特性,這一特性是在 DB2 V9 引入的,developerworks 上的這篇文章 “ DB2 9 表分區 - 改進大型數據庫的管理” 是一個很好的參考。
表分區是一種數據組織模式,在這種模式中,數據將以一個或多個表列的值為依據,分割到多個稱為數據分區或范圍)的存儲對象中。每一個數據分區被分別存儲。這些存儲對象可以位於不同的表空間中,可以位於相同的表空間中,也可能是這兩種情況的組合。
表分區特性改進了大型數據庫的管理,用戶可以靈活的放置索引,在圖 1 中,在分區表上建立了兩個索引,每個索引分別放置在一個表空間中。但是我們同時也看到,每一個索引中的鍵值指向了所有數據分區的數據庫,在表數據量很大的情況索引也會變得很大。
圖 1. DB2 v9 中表分區特性及其索引
另外,表分區特性使得用戶可以使用 ALTER TABLE … ATTACH PARTITION 命令和 DETACH PARTITION 命令輕易的實現表數據的轉入 roll-in )和轉出 roll-out) ,這兩個操作都不需要有任何數據的移動,從而很大的提高性能。同時我們也看到,這兩個操作之後需要對索引進行維護,例如 ATTACH 一個新的分區之後需要為這個分區的新數據進行索引, DETACH 一個分區之後需要將索引中相應的鍵值清除。
分區索引簡介
在 DB2 V9.7 之前,分區表上的索引是不能分區的。由於分區表很多情況都是應用在數據倉庫環境中,當數據量很大的時候,索引也隨之變得很大,從而導致一些的性能上降低。
在 DB2 V9.7 中,索引也可以是分區的,這一特性稱之為分區索引partitioned index)。DB2 V9.7 分區索引由多個索引分區index partition)組成,每個索引分區中的鍵值指向相應的唯一一個數據分區data partition)的數據,系統創建的索引或者用戶的創建的索引都可以是分區索引。
在圖 2 中,在一個有 4 個數據分區的分區表上建立了三個索引,其中 index1 和 index2 是分區索引,分別由 4 個索引分區組成,index3 是非分區索引nonpartitioned index),或者稱之為全局索引global index),相對應的,我們可以把分區索引稱為本地索引local index)。
圖 2. DB2 V9.7 中的分區索引
分區索引帶來的一個顯著優勢在於,在使用 ALTER TABLE ATTACH PARTITION 和 DETAICH PARTITION 命令進行數據的轉入 roll-in )和轉出 roll-out) 時, 使用分區索引能夠很大程度的提高性能。
在 DB2 V9.7 中,以下類型的索引不能是分區索引,只能是非DB2 V9.7 分區索引。
XML 索引
空間數據 spatial data )索引
MDC 塊索引 block index ,系統生成索引)
XML path index 系統生成索引)
准備工作
在開始之前,我們先創建一個新的數據庫名字叫做 MYDB,如清單 1 所示。當然用已經存在的數據庫也可以,但是為了能夠簡化環境,清楚的、逐步的進行我們接下來的討論,建議使用一個全新的數據庫。
本文中所有操作都是在 LinuxAMD64 平台上的 DB2 V97 版本進行,V97 版本之前的版本都沒有DB2 V9.7 分區索引特性。
清單 1. 創建數據庫
db2 CREATE DB mydb
創建數據庫之後我們創建若干個表空間,如清單 2 所示。
清單 2. 創建表空間
- CREATE TABLESPACE TbspT MANAGED BY DATABASE using (FILE 'tspT' 4 M) AUTORESIZE YES;
- CREATE TABLESPACE TbspX MANAGED BY DATABASE using (FILE 'tspX' 4 M) AUTORESIZE YES;
- CREATE TABLESPACE TbspD MANAGED BY DATABASE using (FILE 'tspD' 4 M) AUTORESIZE YES;
- CREATE TABLESPACE TbspY MANAGED BY DATABASE using (FILE 'tspY' 4 M) AUTORESIZE YES;
- CREATE TABLESPACE TbspW MANAGED BY DATABASE using (FILE 'tspW' 4 M) AUTORESIZE YES;
完整內容的學習,請訪問:
http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0907haoqy/