DB2 9 的適應性實用程序節流系統使維護可以在繁忙時間段進行,假如你希望保持汽車狀態良好,就必須定期進行一些維護,比如更換機油和火花塞。對於數據庫,也是如此;如果希望保持良好的性能,就必須定期執行維護操作,比如重新安排數據布局、更新數據庫統計數據和重組表/索引。
在 DB2 中,這些維護操作是通過運行各種實用程序來執行的。因為這些實用程序會消耗寶貴的系統資源,所以維護操作通常在非高峰時間段的 “維護窗口” 中執行。但是,如今的業務越來越需要不間斷地運行,所以讓數據庫離線以執行這些重要的操作變得越來越困難了。現在,一些維護任務可以在數據庫在線的情況下執行,但是許多任務消耗的資源仍然非常多,會影響數據庫的正常工作。
IBM 為這個問題提供了一個解決方案,可以自動執行某些應該定期執行的日常維護活動。IBM 開發人員還創建了一種細粒度的資源控制機制,這種機制稱為實用程序節流(utility throttling)。它允許選擇一些實用程序,讓它們在某些時間占用更多資源,在其他時間占用比較少的資源。
在這篇專欄文章中,我將解釋如何執行自動維護,並說明如果需要在數據庫正在處理工作負載時執行維護操作,應該如何利用實用程序節流。
維護
自動維護是 DB2 9 中引入的一個新特性。通過使用這個特性,您可以指定維護目標,DB2 Database Manager 決定是否需要執行維護活動來實現這些目標。如果 Database Manager 認為需要執行維護操作,就可以在下一個維護時間窗中自動執行此操作;維護時間窗是由您指定的一個時間段,所有自動維護活動都在這段時間內執行。
可以使用自動維護執行以下任務:
生成數據庫備份映像。自動數據庫備份解決方案可以確保適當地定期備份數據庫,用戶不需要總是關注備份時間或如何正確地編寫 BACKUP 命令。
數據碎片整理(表或索引重組)。這種維護活動可以提高 DB2 Database Manager 訪問表的效率。自動重組管理離線表和索引重組,用戶不需要關心何時以及如何重組數據。
數據訪問優化(運行 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 的適應性實用程序節流系統對某些自動維護活動的資源使用量進行調節。