DB2 V9.5工作負載管理之工作負載管理簡介
IBM 的 DB2 V9.5 引入并完善了工作負載管理(WORKLOAD MANAGEMENT)功能,使得我們可以更深入地洞察系統(tǒng)的運行情況并更好地控制資源和性能。在 DB2 V9.5 中,新引入的工作負載管理功能(WLM)可以幫助您標識、管理和監(jiān)視數(shù)據(jù)服務器的工作負載。本文將重點介紹 DB2 V9.5 關于工作負載管理(WLM)的新特性以及相關的概念,并結合實際的例子幫助大家理解和提高。
簡介IBM 的 DB2 V9.5 引入并完善了工作負載管理(WORKLOAD MANAGEMENT)功能,使得我們可以更深入地洞察系統(tǒng)的運行情況并更好地控制資源和性能。在 DB2 V9.5 中,新引入的工作負載管理功能(WLM)可以幫助您標識、管理和監(jiān)視數(shù)據(jù)服務器的工作負載。工作負載管理提供了第一個真正集成到 DB2 數(shù)據(jù)服務器的工作負載管理解決方案,對標識聲明的支持使您可以為多層應用程序環(huán)境中的各個用戶或組提供工作負載管理。
一個好的工作負載管理(WLM)系統(tǒng)能夠能夠幫助企業(yè)更有效的監(jiān)控系統(tǒng)的運行情況。由于 DB2 V9.5 的數(shù)據(jù)管理方面得到了極大的增強,在數(shù)據(jù)庫服務器環(huán)境中,你可以獲得遠遠超過你預期的高效的管理性能。為了保證數(shù)據(jù)庫服務器得到最大的性能,一個高效的工作負載管理(WLM)系統(tǒng)是必需的。一個成功的工作負載管理(WLM)需要考慮很多方面,并且要清楚的知道自己的目標是什么,比如核心的業(yè)務將獲得更多的資源,一些非核心的業(yè)務對其能夠獲取的資源進行一定的限制,又或者,對一些流氓查詢進行限制等等。在數(shù)據(jù)庫服務器環(huán)境中,你必須定義目標。有些時候目標是清晰的,特別是他們源自服務級別協(xié)議(SLA)目標的時候。比如,你可以在 AIX 操作平臺地 DB2 上設定一個特定的應用程序所耗費的 CPU 資源不能超過所有 CPU 資源總量的 10%(可以通過和 AIX WLM 結合實現(xiàn))。目標還可以限定在一天中的某一個時間,比如,一個通宵運行的批處理實用程序必須在早上 8 點之前完成,以滿足每天的銷售報告能夠按時出來。但是在其他的情況下,目標是比較難以量化的,比如想設置這樣一個目標,保持數(shù)據(jù)庫用戶滿意并且防止意外的數(shù)據(jù)庫活動干擾用戶們的日常工作。不管工作目標是否可以量化,理解工作負載管理分成哪幾個階段很重要。工作負載管理(WLM)有三個階段,分別是:
標識階段(Identification Stage)標識階段是工作負載管理解決方案的第一步,用來對數(shù)據(jù)庫服務器當前運行的工作進行鑒定標識。如果你想對某一種類型的工作完成設定的目標,第一步需要能夠標識出這個工作的具體信息。標識一個具體工作的方法有很多中,比如可以使用應用程序的名稱、授權 ID(Authorization ID)等。
管理階段(Management Stage)
管理階段是工作負載管理解決方案的第二步。
在鑒定了工作的類型后,接下是對這個工作的動態(tài)管理,你可以對這個工作分配資源或者進行嚴格控制。管理階段包含保證完成你的目標的機制,當不符合你設定的目標時將采取相應的操作。在數(shù)據(jù)庫服務器上,你會發(fā)現(xiàn),當存在一些低效 SQL 語句時,整體性能會受到很大影響,高峰期時會占據(jù)大量資源,或者不同的應用會過度爭用同一資源。
監(jiān)控階段(Monitoring Stage)
在鑒定了工作的類型后,接下是對這個工作的動態(tài)管理,你可以對這個工作分配資源或者進行嚴格控制。管理階段包含保證完成你的目標的機制,當不符合你設定的目標時將采取相應的操作。在數(shù)據(jù)庫服務器上,你會發(fā)現(xiàn),當存在一些低效 SQL 語句時,整體性能會受到很大影響,高峰期時會占據(jù)大量資源,或者不同的應用會過度爭用同一資源。
工作負載管理的流程如圖1所示:
工作負載管理功能(WLM)允許我們將數(shù)據(jù)服務器上的工作按類進行劃分并進行相應的設置,以便能夠支持同一系統(tǒng)上的各種用戶和應用程序。在引入了 WLM 后,以面向核心業(yè)務系統(tǒng),以事務處理為主的數(shù)據(jù)庫和以面向決策支持、輔助分析的,以數(shù)據(jù)挖掘為主的數(shù)據(jù)庫現(xiàn)在可以選擇合并成一個數(shù)據(jù)庫,也就是說,現(xiàn)在 DB2 支持多種混合類型的工作負載,可以同時兼容事務處理和數(shù)據(jù)挖掘,從而為設計的靈活性提供更大的支持。通過使用工作負載定義自動標識工作、將工作負載分配給服務類并將資源分配到每個服務類,可以將工作劃分為易管理的邏輯組。可以捕獲詳細的工作負載概要文件和性能信息,以幫助優(yōu)化我們的工作負載定義和服務類定義。可以通過成本、時間和并行性閾值來控制執(zhí)行情況,這使我們可以控制流氓查詢并有助于達到服務級別協(xié)議(SLA)目標。通過使用閾值,系統(tǒng)可以自動對不良情況作出反應或在它發(fā)生前進行預測。當我們控制了長時間運行且復雜的查詢的影響后,我們就可以使事務保持平穩(wěn)運行。我們可以跟蹤處理的每個階段,以便可以為用戶提供最新的狀態(tài)信息。
另外,在 AIX 操作系統(tǒng)平臺上,DB2 服務類提供一個可選的功能,用來把 DB2 進程和 AIX 本身的工作負載管理器(WLM)服務類緊密集成,從而可以利用 AIX 操作系統(tǒng)的功能。每個 DB2 服務類可以分配給特定的 AIX WLM 服務類,在 DB2 服務類中工作的所有代理將由 DB2 自動分配給相應的 AIX WLM 服務類。比如,AIX WLM 可以動態(tài)地調(diào)整 CPU 份額或使用其他服務類的備用 CPU 份額來最大程度地利用數(shù)據(jù)服務器。AIX WLM 將對 CPU 進行富有成效的管理,在直接分配資源時使 CPU 得到更好的利用,具體包括:
– 通過分配給 AIX WLM 服務類相應的 CPU 份額,完成 CPU 資源的分配
– CPU 份額可以使用 AIX WLM 接口進行動態(tài)調(diào)節(jié)
– 提供從其他服務類借用其空閑 CPU 份額的能力
– 通過 AIX 服務類可以提供操作系統(tǒng)基本的統(tǒng)計信息
需要注意的是,雖然 AIX WLM 能夠為正在運行的進程提供 CPU,I/O 以及內(nèi)存方面的控制,但是,在 DB2 V9.5 中,DB2 只能受益于 AIX WLM 的 CPU 的部分。
下面我們分別來具體看一下工作負載管理(WLM)的三個階段,首先看一下識別階段(Identification Stage)。標識階段是工作負載管理解決方案的第一步,用來對數(shù)據(jù)庫服務器當前運行的工作進行鑒定標識。可以使用很多方法來標識數(shù)據(jù)庫活動,舉個例子,你可以通過誰提交的工作來標識數(shù)據(jù)庫活動,也可以通過其他方法來標識數(shù)據(jù)庫活動。在標識階段有兩個相關的概念,分別是:
工作負載(WORKLOAD)
工作負載(WORKLOAD)通過工作所在的數(shù)據(jù)庫連接屬性來標識數(shù)據(jù)庫活動。工作負載(WORKLOAD)是用來分配工作給服務類(Service Class)的方法,是一個根據(jù)工作的來源(source)標識區(qū)分工作的對象,以方便隨后對工作進行相應的管理。來源(source)是由工作所在的數(shù)據(jù)庫連接的屬性決定的。
需要注意的是,此處所說的工作負載(WORKLOAD)和設計顧問程序等中所述的工作負載不是一個概念,設計顧問程序等中的工作負載就是數(shù)據(jù)庫管理器必須在給定時間段內(nèi)處理的一組 SQL 語句,而此處所講的工作負載是指根據(jù)工作所在的數(shù)據(jù)庫連接屬性定義的邏輯分類。
工作類(WORK CLASS)和工作類集(WORK CLASS SET)
除了使用工作所在的數(shù)據(jù)庫連接屬性標識數(shù)據(jù)庫活動以外,你還可以通過創(chuàng)建可選的工作類,通過基于工作的類型來標識數(shù)據(jù)庫活動。這些類型屬性可以是 READ , WRITE , DML , DDL , LOAD , CALL ,ALL。
工作類集(WORK CLASS SET)是一組工作類的集合。為了讓一個工作類生效,至少需要啟用一個工作類上的工作操作(WORK ACTION)。
下面我們來看一下管理階段(Management Stage)。管理階段是工作負載管理解決方案的第二步。在鑒定了工作的類型后,接下是對這個工作的動態(tài)管理,你可以對這個工作分配資源或者進行嚴格控制。管理階段包含保證完成你的目標的機制。和管理階段相關的概念有三個概念,分別是:
服務類(SERVICE CLASSES)和服務子類(SERVICE SUBCLASSES)
服務類的目的是為工作運行定義一個執(zhí)行環(huán)境,這個環(huán)境包含可用的資源和不同的執(zhí)行閾值(閾值定義不包含在服務類定義中,而是在單獨的閾值定義部分),當你定義一個工作負載時,你必須為之指定對應的服務類。如果你沒有顯式的定義工作負載,用戶數(shù)據(jù)庫請求會被認為是系統(tǒng)默認的工作負載,其對應的服務類是系統(tǒng)默認的用戶服務類。所有的系統(tǒng)數(shù)據(jù)庫請求,對應的都是默認系統(tǒng)服務類。
所有的數(shù)據(jù)庫請求都是在服務類中執(zhí)行的,并且在服務類中獲得相應的資源。所有的連接都是映射到工作負載上的,所有的工作負載都是映射到服務類上的。針對服務類中資源分配的情況,可以定義相應的閾值,來進行限定。DB2 的服務類擁有兩層結構:服務父類(Service Superclass)和服務子類(Service Subclass)。
當你使用服務類時,你可以通過控制這個服務類的一系列屬性,使不同的工作具有不同的優(yōu)先級。比如,你可以設置服務類中工作的 I/O 頁預取優(yōu)先級,設置服務類中所有代理的 CPU 優(yōu)先級,你還可以通過不同類型的閾值控制服務類中工作所使用的資源。
閾值(THRESHOLD)
可以通過創(chuàng)建閾值的方式對服務類所使用的資源進行控制,閾值可以根據(jù)不同的類型進行創(chuàng)建。閾值提供一種方法,用來控制每種工作能夠使用的資源數(shù)量。在工作負載管理(WLM)解決方案中,你可以使用閾值來防止系統(tǒng)過載或者資源被濫用現(xiàn)象的發(fā)生。通過閾值,你可以直接對特定的資源設置限定,當超過限定時,就會觸發(fā)特定的動作。
工作操作(WORK ACTION)和工作操作集(WORK ACTION SET)
工作操作(WORK ACTION)是一個用來控制某一種類型工作所對應數(shù)據(jù)庫活動的方法。簡單的說就是,當數(shù)據(jù)庫活動滿足已經(jīng)定義好的工作類(WORK CLASS)所涉及的范圍時,就會觸發(fā)相應的工作操作(WORK ACTION)。
下面我們來看一下最后一個階段,也就是監(jiān)控階段(Monitoring Stage)。監(jiān)視的主要目的是確定你的系統(tǒng)和獨立運行的工作負載是否健康和高效。通過表函數(shù),你可以訪問實時操作的數(shù)據(jù)(比如服務類中正在運行的工作負載和數(shù)據(jù)庫活動的列表或者平均響應時間的列表)。作為實時監(jiān)控的補充,為了歷史分析,還通過使用事件監(jiān)控器捕獲數(shù)據(jù)庫活動信息的細節(jié)和數(shù)據(jù)庫活動統(tǒng)計信息。
總的來說,工作負載管理(WLM)有兩種方式對工作進行管理,即一種主要的方式,一種補充的方式。主要的方式是通過工作負載(Workload)、服務類(Service Classs )和閾值(Threshold)相結合的方式,根據(jù)數(shù)據(jù)庫行為的來源(數(shù)據(jù)庫連接屬性)對工作進行管理。補充的方式是通過工作類集(Work Class Set)和工作操作集(Work Action Set)相結合,根據(jù)數(shù)據(jù)庫行為的屬性對工作進行管理。補充的方式是在主要的管理方式基礎之上進行的,不是單獨進行管理的,也就是說,主要的管理方式一定會生效,如果定義了補充的方式,則補充的方式也同時生效。
所有的工作都將通過工作負載(Workload)、服務類(Service Classs )和閾值(Threshold)相結合的方式,根據(jù)數(shù)據(jù)庫行為的來源(數(shù)據(jù)庫連接屬性)對工作進行管理。所有的工作都有對應的工作負載,當你定義一個工作負載時,你必須為之指定對應的服務類。如果你沒有顯式的定義工作負載,用戶數(shù)據(jù)庫請求會被認為是系統(tǒng)默認的工作負載,其對應的服務類是系統(tǒng)默認的用戶服務類。所有的系統(tǒng)數(shù)據(jù)庫請求,對應的都是默認系統(tǒng)服務類。所有的數(shù)據(jù)庫請求都是在服務類中執(zhí)行的,并且在服務類中獲得相應的資源。可以通過創(chuàng)建閾值的方式對服務類所使用的資源進行控制,閾值可以根據(jù)不同的類型進行創(chuàng)建。
補充的方式(通過工作類集(Work Class Set)和工作操作集(Work Action Set)相結合,根據(jù)數(shù)據(jù)庫行為的屬性對工作進行管理)還將在主要的工作負載管理方式之上,根據(jù)數(shù)據(jù)庫的行為,比如是 READ 還是 WRITE,定義工作類,當滿足工作類定義時,就將觸發(fā)相應的工作操作。
具體介紹如下:
工作負載(Workload)、服務類(Service Classs )和閾值(Threshold)
可以根據(jù)數(shù)據(jù)庫連接的各種屬性對具體的工作進行分類,定義成工作負載(Workload),定義工作負載時指定要匹配的服務類(Service Classs ),然后通過控制服務類的一系列屬性,可以使不同的工作具有不同的優(yōu)先級。比如,你可以設置服務類中工作的 I/O 頁預取優(yōu)先級,設置服務類中所有代理的 CPU 優(yōu)先級,你還可以通過不同類型的閾值控制服務類中工作所使用的資源。另外,還可以使用閾值對服務類所使用的資源進行控制,閾值可以根據(jù)不同的類型進行創(chuàng)建。閾值提供一種方法,用來控制每種工作能夠使用的資源數(shù)量。在工作負載管理(WLM)解決方案中,你可以使用閾值來防止系統(tǒng)過載或者資源被濫用現(xiàn)象的發(fā)生。通過閾值,你可以直接對特定的資源設置限定,當超過限定時,就會觸發(fā)特定的動作。
工作類集(Work Class Set)和工作操作集(Work Action Set)
還可以根據(jù)數(shù)據(jù)庫行為的屬性對工作進行分類,比如根據(jù) SQL 語句是 READ 和 WRITE 等定義不同的工作類集,當數(shù)據(jù)庫活動滿足已經(jīng)定義好的工作類(WORK CLASS)所涉及的范圍時,就會觸發(fā)相應的工作操作(WORK ACTION)。
由于工作負載管理(WLM)是 DB2 V9.5 的新特性,很多客戶不知道該如何使用,本文將重點介紹 DB2 V9.5 關于工作負載管理(WLM)的新特性以及相關的概念,并結合實際的例子幫助大家理解和提高。
我們將按照下列順序介紹工作負載管理(WLM)以及相關的功能:
1.安裝 DB2 V9.5 ESE,通過創(chuàng)建示例數(shù)據(jù)庫 DB2TEST1,構建演示環(huán)境,創(chuàng)建示例表 ' RHETTE '.' PROJECT ',并插入演示數(shù)據(jù),創(chuàng)建演示用戶。
2.介紹服務類(SERVICE CLASS)的具體知識,并通過創(chuàng)建 2 個服務類的例子來幫助大家理解。
3.介紹工作負載(WORKLOAD)的具體知識,并通過創(chuàng)建 2 個工作負載的例子來幫助大家理解。
4.介紹閾值(THRESHOLD)的具體知識,并通過創(chuàng)建 2 個閾值的例子來幫助大家理解。
5.介紹如何取消一個數(shù)據(jù)庫活動。
6.介紹工作類(WORK CLASS)和工作操作(WORK ACTION)的具體知識,并通過例子來幫助大家理解。
7.總結工作負載管理(WLM)的優(yōu)點。
