DB2 UDB for iSeries索引可用并行方式的處理
此文章主要向大家講述的是DB2 UDB for iSeries索引可用并行方式對其進(jìn)行處理的實(shí)際操作, 以下就是對DB2 UDB for iSeries索引可用并行方式對其進(jìn)行處理的實(shí)際操作的描述,希望在你今后的學(xué)習(xí)中會(huì)有所幫助。
當(dāng)人們考慮在數(shù)據(jù)庫引擎中進(jìn)行并行處理時(shí),他們立即會(huì)想到通過使用多個(gè)處理器處理單個(gè)查詢來達(dá)到改進(jìn)的 查詢響應(yīng)時(shí)間。人們往往沒有注意到:并行處理也可以加速索引處理,從而改進(jìn)數(shù)據(jù)庫服務(wù)器的總體性能。
簡介
當(dāng)人們考慮在數(shù)據(jù)庫引擎中進(jìn)行并行處理時(shí),他們立即會(huì)想到通過使用多個(gè)處理器處理單個(gè)查詢來達(dá)到改進(jìn)的 查詢響應(yīng)時(shí)間。人們往往沒有注意到:并行處理也可以加速索引處理,從而改進(jìn)數(shù)據(jù)庫服務(wù)器的總體性能。使用 IBM® DB2® Universal Database™ (UDB) for iSeries™,就有可能將多個(gè) CPU 用于索引處理。特別是,當(dāng)創(chuàng)建索引以及由于底層數(shù)據(jù)更改而維護(hù)索引時(shí),DB2 UDB for iSeries 可以使用多個(gè)處理器。以并行方式創(chuàng)建和維護(hù)索引的能力可應(yīng)用于傳統(tǒng)的二進(jìn)制基數(shù)和編碼的向量索引結(jié)構(gòu)。
DB2 UDB for iSeries 并行處理只可以在 iSeries 服務(wù)器上使用,其中已經(jīng)購買、安裝和激活了 DB2 對稱多處理(DB2 Symmetric MultiProcessing,DB2 SMP)特許功能部件,如啟用并行處理中所述。
并行索引創(chuàng)建
DB2 UDB for iSeries 可以將并行處理用于創(chuàng)建 SQL 索引和用鍵值標(biāo)識的邏輯文件(即,CRTLF 命令)。并行索引處理是通過如下方式完成的:在邏輯上,將基本表分成多個(gè)數(shù)據(jù)段,接著每個(gè)進(jìn)程為指定的表段構(gòu)建索引鍵值。然后,將由每個(gè)并行進(jìn)程執(zhí)行的任務(wù)合并在一起來完成最后的索引結(jié)構(gòu)。
正如您在 圖1 中所看到的那樣,使用附加的 CPU 資源可以充分減少創(chuàng)建索引所花費(fèi)的時(shí)間。這種能力在非常大型的數(shù)據(jù)庫環(huán)境中或者在需要盡快重新創(chuàng)建索引的恢復(fù)方案下變得十分重要。
圖1. 啟用并行性之后極大地改進(jìn)了索引構(gòu)建時(shí)間
并行索引維護(hù)
索引維護(hù)的任務(wù)是更改索引鍵以反映對相關(guān)數(shù)據(jù)庫行的更改(通常通過 insert 、 update 或 delete 引起)。如果更改了客戶的訂單號或者新的客戶訂單添加到了數(shù)據(jù)庫,則必須更新所有包含訂單號列作為鍵字段的索引。索引的維護(hù)(或更新)影響與添加或更改訂單相關(guān)的整個(gè)事務(wù)時(shí)間。
如果數(shù)據(jù)庫行更改影響多個(gè)索引,那么這些索引的維護(hù)會(huì)串行發(fā)生,缺省情況下,每次維護(hù)一個(gè)索引。首先,訂單號更改被傳播到 IndexA。對 IndexA 的更改完成之后,訂單號被傳播到 IndexB,依此類推。
并行索引維護(hù)涉及同時(shí)維護(hù)多個(gè)索引??蛻舻挠唵翁柛目梢员煌瑫r(shí)傳播到 IndexA 和 IndexB。這個(gè)并發(fā)索引維護(hù)處理減少了在整個(gè)數(shù)據(jù)庫中更改訂單號所花的總計(jì)時(shí)間。并行索引維護(hù)用資源換取了時(shí)間,提高了給定應(yīng)用程序或事務(wù)的 I/O 速度。
圖2 反映了可以通過并行維護(hù)多個(gè)索引達(dá)到的節(jié)省時(shí)間。在圖2中,新行被裝入具有多個(gè)索引的表中,并行索引維護(hù)將裝入時(shí)間縮短到二到三分之一。
圖 2. 當(dāng)索引維護(hù)并行發(fā)生時(shí)裝入時(shí)間得到改進(jìn)
僅當(dāng)應(yīng)用程序處于下列情況時(shí),DB2 UDB for iSeries 才使用并行索引維護(hù):
正在執(zhí)行 8 行或者更多行的分塊插入(或?qū)?。
相關(guān)表上定義了兩個(gè)或兩個(gè)以上的索引。
一般可以在成批更新和數(shù)據(jù)倉庫裝入過程中找到分塊插入,所以并行索引維護(hù)將在這些環(huán)境中產(chǎn)生最顯著的性能效果。
技巧:如果裝入進(jìn)程添加到表的新行多于該表行數(shù)的 20%,那么通常建議在裝入之前先刪除索引,然后在裝入進(jìn)程完成之后使用并行處理來重構(gòu)索引。
啟用并行處理
在安裝 DB2 SMP 功能部件之后,有幾種激活并行處理的不同方法,以便可以執(zhí)行并行索引構(gòu)建和維護(hù)。
在系統(tǒng)級別
缺省情況下,通過 QQRYDEGREE 系統(tǒng)值,將并行處理量控制在系統(tǒng)范圍的級別。如果該系統(tǒng)值被設(shè)置成 *NONE 以外的其它值,那么在維護(hù)和構(gòu)建索引時(shí) DB2 UDB 將使用并行處理。 CHGSYSVAL (更改系統(tǒng)值)命令可用于更改 QQRYDEGREE 系統(tǒng)值的設(shè)置。您可以指定下面這些值來啟用并行索引處理:
圖2 反映了可以通過并行維護(hù)多個(gè)索引達(dá)到的節(jié)省時(shí)間。在圖2中,新行被裝入具有多個(gè)索引的表中,并行索引維護(hù)將裝入時(shí)間縮短到二到三分之一。
圖 2. 當(dāng)索引維護(hù)并行發(fā)生時(shí)裝入時(shí)間得到改進(jìn)
僅當(dāng)應(yīng)用程序處于下列情況時(shí),DB2 UDB for iSeries 才使用并行索引維護(hù):
正在執(zhí)行 8 行或者更多行的分塊插入(或?qū)?。
相關(guān)表上定義了兩個(gè)或兩個(gè)以上的索引。
一般可以在成批更新和數(shù)據(jù)倉庫裝入過程中找到分塊插入,所以并行索引維護(hù)將在這些環(huán)境中產(chǎn)生最顯著的性能效果。
技巧:如果裝入進(jìn)程添加到表的新行多于該表行數(shù)的 20%,那么通常建議在裝入之前先刪除索引,然后在裝入進(jìn)程完成之后使用并行處理來重構(gòu)索引。
啟用并行處理
在安裝 DB2 SMP 功能部件之后,有幾種激活并行處理的不同方法,以便可以執(zhí)行并行索引構(gòu)建和維護(hù)。
在系統(tǒng)級別
缺省情況下,通過 QQRYDEGREE 系統(tǒng)值,將并行處理量控制在系統(tǒng)范圍的級別。如果該系統(tǒng)值被設(shè)置成 *NONE 以外的其它值,那么在維護(hù)和構(gòu)建索引時(shí) DB2 UDB 將使用并行處理。 CHGSYSVAL (更改系統(tǒng)值)命令可用于更改 QQRYDEGREE 系統(tǒng)值的設(shè)置。您可以指定下面這些值來啟用并行索引處理: