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