DB2并行索引的創(chuàng)建與維護的實際操作步驟
我們今天主要向大家講述的是DB2并行索引的創(chuàng)建與維護,DB2 UDB for iSeries 能將并行處理用于創(chuàng)建 SQL 索引與用鍵值標識的邏輯文件(即,CRTLF 命令)。DB2并行索引處理主要是通過如下方式完成的:
在邏輯上,將基本表分成多個數(shù)據(jù)段,接著每個進程為指定的表段構(gòu)建索引鍵值。然后,將由每個并行進程執(zhí)行的任務(wù)合并在一起來完成***的索引結(jié)構(gòu)。
正如您在 圖1 中所看到的那樣,使用附加的 CPU 資源可以充分減少創(chuàng)建索引所花費的時間。這種能力在非常大型的數(shù)據(jù)庫環(huán)境中或者在需要盡快重新創(chuàng)建索引的恢復(fù)方案下變得十分重要。
圖1. 啟用并行性之后極大地改進了索引構(gòu)建時間
DB2并行索引維護
索引維護的任務(wù)是更改索引鍵以反映對相關(guān)數(shù)據(jù)庫行的更改(通常通過 insert 、 update 或 delete 引起)。如果更改了客戶的訂單號或者新的客戶訂單添加到了數(shù)據(jù)庫,則必須更新所有包含訂單號列作為鍵字段的索引。索引的維護(或更新)影響與添加或更改訂單相關(guān)的整個事務(wù)時間。
如果數(shù)據(jù)庫行更改影響多個索引,那么這些索引的維護會串行發(fā)生,缺省情況下,每次維護一個索引。首先,訂單號更改被傳播到 IndexA。對 IndexA 的更改完成之后,訂單號被傳播到 IndexB,依此類推。
并行索引維護涉及同時維護多個索引。客戶的訂單號更改可以被同時傳播到 IndexA 和 IndexB。這個并發(fā)索引維護處理減少了在整個數(shù)據(jù)庫中更改訂單號所花的總計時間。DB2并行索引維護用資源換取了時間,提高了給定應(yīng)用程序或事務(wù)的 I/O 速度。
圖2 反映了可以通過并行維護多個索引達到的節(jié)省時間。在圖2中,新行被裝入具有多個索引的表中,并行索引維護將裝入時間縮短到二到三分之一。
圖 2. 當索引維護并行發(fā)生時裝入時間得到改進
僅當應(yīng)用程序處于下列情況時,DB2 UDB for iSeries 才使用DB2并行索引維護:
正在執(zhí)行 8 行或者更多行的分塊插入(或?qū)?。
相關(guān)表上定義了兩個或兩個以上的索引。
一般可以在成批更新和數(shù)據(jù)倉庫裝入過程中找到分塊插入,所以并行索引維護將在這些環(huán)境中產(chǎn)生最顯著的性能效果。
技巧:如果裝入進程添加到表的新行多于該表行數(shù)的 20%,那么通常建議在裝入之前先刪除索引,然后在裝入進程完成之后使用并行處理來重構(gòu)索引。
【編輯推薦】