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