并行索引維護 索引維護的任務是更改索引鍵以反映對相關數據庫行的更改(通常通過 insert 、 update 或 delete 引起)。假如更改了客戶的訂單號或者新的客戶訂單添加到了數據庫,則必須更新所有包含訂單號列作為鍵字段的索引。索引的維護(或更新)影響與添加或更改訂單相關的整個事務時間。 123下一頁 假如數據庫行更改影響多個索引,那么這些索引的維護會串行發生,缺省情況下,每次維護一個索引。首先,訂單號更改被傳播到 IndexA。對 IndexA 的更改完成之后,訂單號被傳播到 IndexB,依此類推?! 〔⑿兴饕S護涉及同時維護多個索引。客戶的訂單號更改可以被同時傳播到 IndexA 和 IndexB。這個并發索引維護處理減少了在整個數據庫中更改訂單號所花的總計時間。并行索引維護用資源換取了時間,提高了給定應用程序或事務的 I/O 速度?! D2 反映了可以通過并行維護多個索引達到的節省時間。在圖2中,新行被裝入具有多個索引的表中,并行索引維護將裝入時間縮短到二到三分之一?! D 2. 當索引維護并行發生時裝入時間得到改進
僅當應用程序處于下列情況時,DB2 UDB for iSeries 才使用并行索引維護: 正在執行 8 行或者更多行的分塊插入(或寫)?! ∠嚓P表上定義了兩個或兩個以上的索引?! ∫话憧梢栽诔膳潞蛿祿}庫裝入過程中找到分塊插入,所以并行索引維護將在這些環境中產生最顯著的性能效果?! 〖记桑杭偃缪b入進程添加到表的新行多于該表行數的 20%,那么通常建議在裝入之前先刪除索引,然后在裝入進程完成之后使用并行處理來重構索引?! ⒂貌⑿刑幚怼 ≡诎惭b DB2 SMP 功能部件之后,有幾種激活并行處理的不同方法,以便可以執行并行索引構建和維護。 在系統級別 缺省情況下,通過 QQRYDEGREE 系統值,將并行處理量控制在系統范圍的級別。假如該系統值被設置成 *NONE 以外的其它值,那么在維護和構建索引時 DB2 UDB 將使用并行處理。 CHGSYSVAL (更改系統值)命令可用于更改 QQRYDEGREE 系統值的設置。您可以指定下面這些值來啟用并行索引處理: 上一頁123下一頁 *MAX — 在并行索引維護和構建期間,DB2 UDB 引擎可以使用可用于作業(連接)的所有 CPU 處理器和所有內存?! ?OPTIMIZE —“好鄰居”設置。DB2 UDB 引擎在 CPU 處理器之間和內存中進行作業共享。 *NBRTASKS n — 它設置 DB2 UDB 引擎可以使用的最大 CPU 處理器數。這不是 QQRYDEGREE 系統值的有效值。 *NONE — 這是缺省值。對索引處理不使用并行處理?! ≡谧鳂I或連接級別 假如您想要將并行處理限制于單個作業或連接,則使用 CHGQRYA (更改查詢屬性)CL 系統命令或 QAQQINI 文件來為作業或連接啟用并行處理。這些接口將覆蓋系統值設置?! HGQRYA CL 命令的 DEGREE 參數接受與系統值相同的值。假如在作業中執行下面的 CHGQRYA 命令,那么不管系統值是什么,該作業的并行度只能設置成 *MAX 。 CHGQRYA DEGREE(*MAX) 可以在作業中多次發出該命令來打開或關閉并行性?! AQQINI 文件同樣答應您為單個作業或連接指定并行處理。象可以在 PC 中找到的 .INI 文件(它們用于存儲控制 PC 工具和應用程序的行為(顏色、窗口大小等)的配置設置)一樣, QAQQINI 文件可用來影響數據庫引擎的行為 — 在這種情況下是并行處理行為??梢栽诙鄠€數據庫請求之間動態保存和應用這些 QAQQINI 配置設置。 QAQQINI 文件只是一個標準的數據庫表這一事實意味著:您可以根據環境需要,動態地更改不同屬性的值。它還非常靈活,因為標準數據庫接口可用來更改 QAQQINI 屬性的值。下面的SQL 語句演示了如何使用 QAQQINI 文件來將并行處理度設置為 *OPTIMIZE:UPDATE MyLib.QAQQINISET QQVAL = '*OPTIMIZE' WHERE QQPAM='PARALLEL_DEGREE' 對于在作業或連接期間可以更改屬性值的次數沒有限制。 結束語 本文演示了 DB2 SMP 功能部件為非查詢工作負載所提供的并行處理的價值。要啟用并行索引處理,可在構建索引、裝入數據或執行批處理前,通過本文中描述的接口之一來激活并行處理。通過這樣做,您可以更充分利用具有多個 CPU 的服務器上的 CPU 資源并提高性能。 上一頁123 新聞熱點
疑難解答