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