DB2 9 分布式管理的正確操作流程
以下的文章主要描述的是DB2 9 分布式管理,在此篇專欄文章中,我們將解釋執(zhí)行自動維護的實際操作步驟,并說明如假如需要在DB2數(shù)據(jù)庫正在處理工作負載時執(zhí)行維護操作,應(yīng)該如何利用實用程序節(jié)流。
前言
DB2 9 的適應(yīng)性實用程序節(jié)流系統(tǒng)使維護可以在繁忙時間段進行。
如果您希望保持汽車狀態(tài)良好,就必須定期進行一些維護,比如更換機油和火花塞。對于數(shù)據(jù)庫,也是如此;如果希望保持良好的性能,就必須定期執(zhí)行維護操作,比如重新安排數(shù)據(jù)布局、更新數(shù)據(jù)庫統(tǒng)計數(shù)據(jù)和重組表/索引。
在 DB2 中,這些維護操作是通過運行各種實用程序來執(zhí)行的。因為這些實用程序會消耗寶貴的系統(tǒng)資源,所以維護操作通常在非高峰時間段的 “維護窗口” 中執(zhí)行。但是,如今的業(yè)務(wù)越來越需要不間斷地運行,所以讓數(shù)據(jù)庫離線以執(zhí)行這些重要的操作變得越來越困難了?,F(xiàn)在,一些維護任務(wù)可以在數(shù)據(jù)庫在線的情況下執(zhí)行,但是許多任務(wù)消耗的資源仍然非常多,會影響數(shù)據(jù)庫的正常工作。
IBM 為這個問題提供了一個解決方案,可以自動執(zhí)行某些應(yīng)該定期執(zhí)行的日常維護活動。IBM 開發(fā)人員還創(chuàng)建了一種細粒度的資源控制機制,這種機制稱為實用程序節(jié)流(utility throttling)。它允許選擇一些實用程序,讓它們在某些時間占用更多資源,在其他時間占用比較少的資源。
在這篇專欄文章中,我將解釋如何執(zhí)行自動維護,并說明如果需要在數(shù)據(jù)庫正在處理工作負載時執(zhí)行維護操作,應(yīng)該如何利用實用程序節(jié)流。
維護
自動維護是 DB2 9 中引入的一個新特性。通過使用這個特性,您可以指定維護目標,DB2 Database Manager 決定是否需要執(zhí)行維護活動來實現(xiàn)這些目標。如果 Database Manager 認為需要執(zhí)行維護操作,就可以在下一個維護時間窗中自動執(zhí)行此操作;維護時間窗是由您指定的一個時間段,所有自動維護活動都在這段時間內(nèi)執(zhí)行。
可以使用自動維護執(zhí)行以下任務(wù):
生成數(shù)據(jù)庫備份映像。自動數(shù)據(jù)庫備份解決方案可以確保適當?shù)囟ㄆ趥浞輸?shù)據(jù)庫,用戶不需要總是關(guān)注備份時間或如何正確地編寫 BACKUP 命令。
數(shù)據(jù)碎片整理(表或索引重組)。這種維護活動可以提高 DB2 Database Manager 訪問表的效率。自動重組DB2 9 分布式管理離線表和索引重組,用戶不需要關(guān)心何時以及如何重組數(shù)據(jù)。
數(shù)據(jù)訪問優(yōu)化(運行 RUNSTATS)。DB2 Database Manager 會自動更新關(guān)于表數(shù)據(jù)、表索引數(shù)據(jù)或者這兩者的系統(tǒng)編目統(tǒng)計數(shù)據(jù)。在響應(yīng)查詢時,DB2 Optimizer 使用這些統(tǒng)計數(shù)據(jù)決定使用哪個路徑訪問數(shù)據(jù)。自動統(tǒng)計數(shù)據(jù)收集過程會維護***的表統(tǒng)計數(shù)據(jù),從而提高數(shù)據(jù)庫的性能。其目標是讓 DB2 Optimizer 總是根據(jù)準確的信息選擇訪問計劃。
統(tǒng)計數(shù)據(jù)分析。自動統(tǒng)計數(shù)據(jù)分析過程會探測過時、缺失或不準確地指定的統(tǒng)計數(shù)據(jù),根據(jù)查詢反饋生成統(tǒng)計數(shù)據(jù)分析,從而建議何時以及如何收集表統(tǒng)計數(shù)據(jù)。
在創(chuàng)建 DB2 9 數(shù)據(jù)庫時,會默認啟用自動維護;通過自動維護專用的數(shù)據(jù)庫配置參數(shù)(auto_maint、auto_db_backup、auto_tbl_maint、auto_runstats、auto_stats_prof、auto_prof_upd 和 auto_reorg)啟用可用的自動維護特性。這些參數(shù)是一組層次化的開關(guān),可以設(shè)置為 ON 或 OFF。
用程序節(jié)流
自動維護活動(備份、統(tǒng)計數(shù)據(jù)收集、統(tǒng)計數(shù)據(jù)分析和表/索引重組)在運行時會消耗系統(tǒng)資源,所以會影響數(shù)據(jù)庫性能。另外,離線數(shù)據(jù)庫備份和表/索引重組操作會限制對表、索引或整個數(shù)據(jù)庫的訪問。為了盡可能減少對系統(tǒng)的影響,可以使用 DB2 的適應(yīng)性實用程序節(jié)流系統(tǒng)對某些自動維護活動的資源使用量進行調(diào)節(jié)。
適應(yīng)性實用程序節(jié)流系統(tǒng)是在 DB2 8.1.2 中引入的。這個系統(tǒng)使維護實用程序可以在工作負載比較高的時間段運行,同時把它們對系統(tǒng)的影響限制在可接受的范圍內(nèi)。這個節(jié)流系統(tǒng)還使實用程序在非高峰時間段自動地獲得更多的計算資源,而在高峰時間段減少資源使用量。在 DB2 9.5 中,以下維護操作可以利用適應(yīng)性實用程序節(jié)流系統(tǒng):
統(tǒng)計數(shù)據(jù)收集
備份操作
數(shù)據(jù)重新布置操作
異步索引清理
您可能已經(jīng)使用實用程序進行節(jié)流,只是沒有意識到而已;在默認情況下,DB2 自動地對一些自動調(diào)用的維護實用程序進行節(jié)流,比如自動的 RUNSTATS。
設(shè)置和影響策略
為了控制實用程序節(jié)流,必須建立一個影響策略。影響策略是指實例范圍限制,所有節(jié)流實用程序?qū)ιa(chǎn)性工作負載的積累影響不能超越這個限制;建立這樣的策略之后,就由系統(tǒng)負責確保實施這個策略。
對于在一個實例中運行的啟用節(jié)流的所有實用程序,通過 DB2 Database Manager 配置參數(shù) util_impact_lim 控制它們的影響策略。(這個參數(shù)是動態(tài)的,所以不需要停止并重新啟動實例就能夠修改它;甚至可以在啟用節(jié)流的實用程序正在運行時設(shè)置它。)要想為所有節(jié)流的實用程序定義影響策略,只需為配置參數(shù) util_impact_lim 指定一個 1 到 100 之間的值。
例如,要想把實例范圍的影響限制設(shè)置為 10%(換句話說,要確保所有節(jié)流的實用程序?qū)ο到y(tǒng)工作負載造成的性能影響不超過 10%),只需執(zhí)行下面的 UPDATE DATABASE MANAGER 命令,把配置參數(shù) util_impact_lim 設(shè)置為 10:
- UPDATE DATABASE MANAGER USING UTIL_IMPACT_LIM 10
如您所料,與未節(jié)流的實用程序相比,節(jié)流的實用程序通常要花費更長時間才能執(zhí)行完成。如果發(fā)現(xiàn)某個實用程序的運行時間過長了,就可以增加配置參數(shù) util_impact_lim 的值,或者通過把配置參數(shù) util_impact_lim 設(shè)置為 100 來完全禁用節(jié)流。(如果 util_impact_lim 設(shè)置為 100,實用程序就不會受到節(jié)流。在這種情況下,實用程序可以盡可能快地運行,但是它們很可能對工作負載性能產(chǎn)生嚴重影響。)
執(zhí)行節(jié)流的實用程序
定義影響策略并不意味著所有實用程序的運行都會受到節(jié)流。實際上,即使已經(jīng)定義了影響策略,在默認情況下實用程序都是以非節(jié)流模式運行的。要想以節(jié)流模式運行一個實用程序,就必須在調(diào)用這個實用程序時啟用節(jié)流,或者在啟動這個實用程序之后啟用節(jié)流。有些實用程序無法在調(diào)用時啟用節(jié)流,只能在啟動之后啟用節(jié)流,例如 REBALANCE。
要想在調(diào)用實用程序時啟用節(jié)流,必須在執(zhí)行這個實用程序所用的命令中指定 UTIL_IMPACT_PRIORITY 選項。例如,為了調(diào)用 Backup 實用程序并啟用節(jié)流,應(yīng)該執(zhí)行下面的 BACKUP DATABASE 命令:
- BACKUP DATABASE sample UTIL_IMPACT_PRIORITY
當前,只有 BACKUP DATABASE 和 RUNSTATS 命令能夠識別 UTIL_IMPACT_PRIORITY 子句。另外,必須先定義影響策略(通過設(shè)置配置參數(shù) util_impact_lim),然后 UTIL_IMPACT_PRIORITY 子句才能對這些命令起作用。
UTIL_IMPACT_PRIORITY 子句有一個可選的相對優(yōu)先級參數(shù)(0 到 100 之間的值;0 表示關(guān)閉),這個參數(shù)用來區(qū)分節(jié)流的實用程序的重要性。與具有較低優(yōu)先級的節(jié)流實用程序相比,高優(yōu)先級的實用程序會占用更多資源。IBM 建議不指定相對優(yōu)先級值,而是接受默認的優(yōu)先級值 50。(請記住,所有節(jié)流實用程序的累積影響仍然受到影響策略的限制。)以上的相關(guān)內(nèi)容就是對DB2 9 分布式管理的介紹,望你能有所收獲。
【編輯推薦】
- IBM發(fā)布DB2 9.7 兼容Oracle數(shù)據(jù)庫效果如何?
- 把DB2V8數(shù)據(jù)庫升級到DB2V95的方案“內(nèi)幕”
- DB2 batch update在實際操作中的注意事項
- 使用DB2數(shù)據(jù)庫時哪些知識點是必須記住的?
- 對DB2服務(wù)器主機名的修改的正確操作流程