亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

DB2 V9.5工作負載管理之工作類和工作操作

2024-07-21 02:43:49
字體:
來源:轉載
供稿:網友
在 DB2 V9.5 中,新引入的工作負載管理功能( WLM )可以幫助您標識、管理和監視數據服務器的工作負載。本文將重點介紹 DB2 V9.5 工作負載管理( WLM )中的工作類( WORK CLASS )和工作操作( WORK ACTION )的相關概念,并結合實際的例子幫助大家理解和提高。

取消一個數據庫活動

在我們生產系統中,可能存在一些正在運行的大 SQL,這些活動消耗了太多的資源。如果我們想停止這些正在執行的活動,可以調用 WLM_CANCEL_ACTIVITY() 存儲過程,如果想捕獲一個活動的詳細信息可以調用 WLM_CAPTURE_ACTIVITY_IN_PROGRESS() 存儲過程,如果想收集和重置一個工作負載對象的統計信息可以調用 WLM_COLLECT_STATS()。這些存儲過程的具體信息如下:

WLM_CANCEL_ACTIVITY ( application_handle , uow_id , activity_id ) .

可以使用這個存儲過程來取消一個正在運行或者正在排隊的活動。對某個特定的活動來說,我們可以使用應用程序句柄、工作單元標識和活動標識來唯一標識。使用這個存儲過程,我們可以取消任何類型的活動。當這個存儲過程執行后,被取消的特定活動將收到 SQL4725N 的錯誤信息。

WLM_CAPTURE_ACTIVITY_IN_PROGRESS ( application_handle , uow_id , activity_id ) .

我們可以使用這個存儲過程捕獲特定活動的詳細信息,并發送給活動事件監控器。這個存儲過程會立即發送信息,而不是等待該活動完成再發送。

WLM_COLLECT_STATS ( ) .

使用這個存儲過程可以用來收集和重置工作負載對象統計信息。所有跟蹤收集的服務類、工作負載、閾值隊列和工作動作集統計信息,都會發送給活動統計信息事件監控器(如果存在)并重置。如果沒有活動統計信息事件監控器,那么統計信息將只重置,而不收集。

以上存儲過程調用中需要的應用程序句柄( application_handle )、工作單元標識( uow_id )、活動標識( activity_id ),可以通過調用表函數 WLM_GET_WORKLOAD_OCCURRENCE_ACTIVITIES 來獲得。

我們繼續在窗口 1 用 ADMINISTRATOR 用戶連接示例數據庫 DB2TEST1,在窗口 2 用 RHETTE 用戶連接示例數據庫 DB2TEST1,并在窗口 2 中執行一個大的查詢,具體如清單 23 所示:

清單23 . 在窗口 2 中執行一個大的查詢

C:/> db2 connect to db2test1 user rhette using passw0rd

數據庫連接信息

數據庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = DB2ADMIN

本地數據庫別名 = DB2TEST1

C:/> db2 select count ( * ) from rhette.project , rhette.project , rhette.projec

t , rhette.project , rhette.project , rhette.project

在窗口 2 中的大型查詢完成之前,在窗口 1 中調用表函數 WLM_GET_WORKLOAD_OCCURRENCE_ACTIVITIES,來獲得窗口 2 中正在進行的大型查詢的應用程序句柄( application_handle )、工作單元標識( uow_id )、活動標識( activity_id )信息,在獲得這些信息后,如果還想查看更詳細的信息,可以根據應用程序句柄通過 LIST APPLICATIONS SHOW DETAIL 來查看。具體如清單 24 所示:

清單 24 . 在窗口 1 中調用表函數 WLM_GET_WORKLOAD_OCCURRENCE_ACTIVITIES

C:/> db2 - tvf get_wkld_activities.txt

SELECT T.APPLICATION_HANDLE , T.UOW_ID , T.ACTIVITY_ID , T.ACTIVITY_TYPE ,

T.ACTIVITY_TYPE , T.ACTIVITY_STATE , T.LOCAL_START_TIME FROM

TABLE( WLM_GET_WORKLOAD_OCCURRENCE_ACTIVITIES ( CAST ( NULL AS BIGINT ) , -2 ) ) T

ORDER BY T.LOCAL_START_TIME

APPLICATION

_HANDLE UOW_ID ACTIVITY_ID ACTIVITY_TYPE ACTIVITY_STATE

LOCAL_START_TIME

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

80 7 1 READ_DML EXECUTING

2008-01-02-17.01.25.306889

81 10 1 READ_DML EXECUTING

2008-01-02-17.01.32.253342

2 條記錄已選擇。

接下來我們來看一下如何取消窗口 2 中正在進行的大型查詢,在窗口 1 中調用 WLM_CANCEL_ACTIVITY 存儲過程,輸入參數使用在清單 24 中獲得的應用程序句柄( application_handle )、工作單元標識( uow_id )、活動標識( activity_id ),具體如清單 25 所示:

清單25 . 在窗口 1 中調用 WLM_CANCEL_ACTIVITY 存儲過程取消特定活動

C:/> db2 call WLM_CANCEL_ACTIVITY( 80 , 7 , 1 )

返回狀態 = 0

此時窗口 2 中正在執行的大型查詢會收到“ SQL4725N 已取消該活動。 SQLSTATE = 57014 ”的相關信息,具體如清單 26 所示:

清單 26 . 在窗口 2 中獲得特定活動取消的相關信息

C:/> db2 select count ( * ) from rhette.project , rhette.project , rhette.projec

t , rhette.project , rhette.project , rhette.project

1

- - - - - - - - - - - - - - - - -

SQL4725N 已取消該活動。 SQLSTATE = 57014

工作類( WORK CLASS )和工作操作( WORK ACTION )

除了使用工作所在的數據庫連接屬性標識數據庫活動以外,你還可以通過創建可選的工作類,通過基于工作的類型來標識數據庫活動。這些類型屬性可以是 READ , WRITE , DML , DDL , LOAD , CALL ,ALL。工作類型屬性具體的介紹如下:

READ

此屬性對應的活動包括以下語句:

所有的 SELECT 或者 SELECT INTO 語句,并且語句中不包含 DELETE , INSERT , MERGE , UPDATE 語句;

所有的 VALUES INTO 語句;

所有的 XQuery 語句。

WRITE

此屬性對應的活動包括以下語句:

所有的 UPDATE 語句;

所有的 DELETE 語句;

所有的 INSERT 語句;

所有的 MERGE 語句;

所有的包含 DELETE, INSERT, UPDATE 的SELECT 語句;

所有的 XQuery 語句。

CALL

此屬性對應的活動包括所有的 CALL 語句。如果想讓工作類包含一個 CALL 語句 ,其工作類型可以是 CALL 或者 ALL。

DML

所有在 READ 和 WRITE 中出現的語句都是 DML 語句。

DDL

此屬性對應的活動包括以下語句:

所有的 ALTER 語句;

所有的 CREATE 語句;

所有的 COMMENT 語句;

所有的 DECLARE GLOBAL TEMPORARY TABLE 語句;

所有的 DROP 語句;

所有的 FLUSH PACKAGE CACHE 語句;

所有的 GRANT 語句;

所有的 REFRESH TABLE 語句;

所有的 RENAME 語句;

所有的 REVOKE 語句;

所有的 SET INTEGRITY 語句;

LOAD

此屬性對應的活動包括所有的 LOAD 操作。

ALL

此屬性對應的活動可以是以上屬性中出現任意一個活動。

工作操作( WORK ACTION )是一個用來控制某一種類型工作所對應數據庫活動的方法。簡單的說就是,當數據庫活動滿足已經定義好的工作類( WORK CLASS )所涉及的范圍時,就會觸發相應的工作操作( WORK ACTION )。

下面我們在窗口 1 中,發出 CREATE WORK CLASS SET 命令,創建工作類集 myquery,其下包含三個工作類,分別是針對小型查詢的 smallquery,針對中型查詢的 mediumquery 以及針對大型查詢的 largequery,工作類型都是 DML,具體如清單 27 所示:

清單 27 . 在窗口 1 中創建工作類集

C:/> db2 connect to db2test1 user administrator using passw0rd

數據庫連接信息

數據庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = ADMINIST . . .

本地數據庫別名 = DB2TEST1

C:/> db2 - tvf crtWorkClassSet.sql

drop work class set myquery

DB21034E 該命令被當作 SQL 語句來處理,因為它是無效的“命令行處理器”命令。在

SQL 處理期間,它返回:

SQL0204N " MYQUERY " 是一個未定義的名稱。 SQLSTATE = 42704

create work class set myquery (

work class smallQuery work type dml

for timeroncost from 1 to 1000 ,

work class mediumQuery work type dml

for timeroncost from 1000 to 100000 ,

work class largeQuery work type dml

for timeroncost from 100000 tounbounded )

DB20000I SQL命令成功完成。

命令成功完成,這樣我們就創建了一個工作類集和三個工作類。工作類 smallQuery 包含的范圍是:當一個特定的 DML 活動,其估計成本大于 1 timeron 且小于等于 1000 timerons。需要注意的是,成本是由 CPU 成本(以指令數計)和 I/O(以尋道數和頁的轉換數計)的組合得出的。成本的單位是 timeron。timeron 不直接等于任何實際的所用時間,只是給出粗略估計的資源(成本)。工作類 mediumQuery 包含的范圍是:當一個特定的 DML 活動,其估計成本大于 1000 timeron 且小于等于 100000 timerons。工作類 largeQuery 包含的范圍是:當一個特定的 DML 活動,其估計成本大于 100000 timeron ,沒有上限。

下面我們繼續在窗口 1 中創建相應的工作動作集以及工作動作。發出 CREATE WORK ACTION SET 命令,創建工作動作集 MYWORKACTION,并創建面向工作類 smallQuery 的工作動作 smallQueryAction ,面向工作類 mediumQuery 的工作動作 mediumQueryAction,面向工作類 largeQuery 的工作動作 largeQueryAction,具體如清單 28 所示:

清單 28 . 在窗口 1 中創建工作動作集

C:/> db2 - tvf crtWorkActionSet.sql

alter work action set MYWORKACTION

alter smallQueryAction disable

alter mediumQueryAction disable

alter largeQueryAction disable

DB20000I SQL命令成功完成。

drop work action set MYWORKACTION

DB20000I SQL命令成功完成。

create work action set MYWORKACTION for database using work class set MYQUERY

( work action smallQueryAction on work class smallQuery

count activity,

work action mediumQueryAction on work class mediumQuery

collect activity data with details and values ,

work action largeQueryAction on work class largeQuery

when concurrentdbcoordactivities > 1 and queuedactivities > 1 stop execution )

DB20000I SQL命令成功完成。

命令成功完成。這樣我們就創建了 1 個工作動作集和 3 個工作動作。

工作動作集 MYWORKACTION 對應的工作類集 MYQUERY。工作動作 smallQueryAction 對應的工作類是 smallQuery,且指定了 count activity 選項,含義是指定工作類 smallQuery 所對應的數據庫活動,只要其任何一個在運行,則這個工作類的計數器就會累積增長。

工作動作 mediumQueryAction 對應的工作類是 mediumQuery,且指定了 collect activity data with details and values 選項,collect activity data 的含義是當工作類 mediumQuery 相關的每一個活動完成后,都將其數據發送給相關合適的事件監控器;with details 的含義是當相關的活動完成后,還要把相關的語句和編譯環境發送給相關的時間監控器;and values 的含義是那些活動相關的輸入數據值也發送給相關的事件監控器。

工作動作 largeQueryAction 對應的工作類是 largeQuery,且指定了 when concurrentdbcoordactivities > 1 and queuedactivities > 1 stop execution 選項,含義是當并發的數據庫協調器活動( database coordinator activities )大于 1 時,數據庫管理器將對活動進行排隊,對后來的數據庫協調器活動(比如一個查詢)放入排隊隊列。并且當排隊的活動也大于1時,數據庫活動將不允許執行。

下面我們繼續在窗口 2 中用 RHETTE 用戶連接示例數據庫 DB2TEST1,并執行兩個查詢,在窗口 3 中用 RHETTE 用戶連接示例數據庫 DB2TEST1 ,也執行兩個相同的查詢,然后在窗口 2 中通過調用表函數 WLM_GET_WORK_ACTION_SET_STATS ,查看工作動作集的狀態,具體如清單 29 所示:

清單 29. 在窗口 2 中執行兩個查詢

C:/> db2 connect to db2test1 user rhette using passw0rd

數據庫連接信息

數據庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = RHETTE

本地數據庫別名 = DB2TEST1

C:/> db2 select count ( * ) from project , project , project

1

- - - - - - - - - - - - - - - - - - - - - -

8000

1 條記錄已選擇。

C:/> db2 select count ( * ) from project , project , project , project , project

1

- - - - - - - - - - - - - - - - - - - - - -

3200000

1 條記錄已選擇。

清單 30. 在窗口 3 中執行兩個查詢

C:/> db2 connect to db2test1 user rhette using passw0rd

數據庫連接信息

數據庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = RHETTE

本地數據庫別名 = DB2TEST1

C:/> db2 select count ( * ) from project , project , project

1

- - - - - - - - - - - - - - - - - - - - - -

8000

1 條記錄已選擇。

C:/> db2 select count ( * ) from project , project , project , project , project , project

1

- - - - - - - - - - - - - - - - - - - - - -

64000000

1 條記錄已選擇。

清單 31. 在窗口 2 中查看工作動作集的狀態

C:/> db2 select substr( work_action_set_name , 1 , 18 ) as work_action_set_name ,

substr ( char ( dbpartitionnum ) , 1 , 4 ) as part ,

substr ( work_class_name , 1 , 15 ) as work_class_name , last_reset ,

substr ( char ( act_total ) , 1 , 14 ) as total_wlo_acts from

table ( WLM_GET_WORK_ACTION_SET_STATS ( cast ( null as varchar ( 128 ) ) , -2 ) )

as wasstats order by work_action_set_name , work_class_name , part

WORK_ACTION_SET_NAME PART WORK_CLASS_NAME LAST_RESET TOTAL_WLO_ACTS

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

MYWORKACTION 0 * 2008-01-03-14.26.15.293798 0

MYWORKACTION 0 LARGEQUERY 2008-01-03-14.26.15.293791 1

MYWORKACTION 0 MEDIUMQUERY 2008-01-03-14.26.15.293754 1

MYWORKACTION 0 SMALLQUERY 2008-01-03-14.26.15.293717 3

4 條記錄已選擇。

命令成功完成。

接下來我們看一下如果同時在三個窗口執行同樣的大型 SQL,會出現什么樣的狀況。首先在窗口 1 中執行一個大型查詢 SQL,同時在窗口 2、3 也同時執行同樣的大型 sql,在窗口 3 會報“ SQL4712N 已超過閾值 =‘SQL080103142608430’。原因碼 = ‘6’。 SQLSTATE = 5U026”錯誤。窗口 1 和窗口 2 最終將查詢出結果集來。具體如清單 30 所示:

清單 32. 在窗口 1 中執行大型查詢

C:/> db2 connect to db2test1 user rhette using passw0rd

數據庫連接信息

數據庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = RHETTE

本地數據庫別名 = DB2TEST1

C:/> db2 select count ( * ) from project , project , project , project , project , project

1

- - - - - - - - - - - - - - - - - - - - - -

64000000

1 條記錄已選擇。

清單 33. 在窗口 2 中執行大型查詢

C:/> db2 select count ( * ) from project , project , project , project , project , project

1

- - - - - - - - - - - - - - - - - - - - - -

64000000

1 條記錄已選擇。

清單 34. 在窗口 3 中執行大型查詢

C:/> db2 select count ( * ) from project , project , project , project , project ,

project

SQL4712N 已超過閾值 " SQL080103142608430 "。原因碼 = " 6 "。 SQLSTATE = 5U026

總結工作負載管理( WLM )

通過上面的講述和具體的例子,我們可以發現使用 DB2 V9.5 工作負載管理( WLM )可以更好地控制系統資源,增加了可預測性和穩定性。我們可以定義一個混合的工作負載來滿足復雜的場景需求。針對越來越復雜的數據庫活動,我們可以預定義一組工作負載,并使用相應的服務類、閾值、工作類和工作動作來標識數據庫活動并將它們隔離在自己的執行環境中,并給其分配達到我們設定目標所需要的適當資源。在環境或服務類中,您可以顯式管理系統資源,以便較重要的資源可供較高優先級的工作使用,并可以控制或消除與較低優先級工作的爭用情況。

當我們的生產系統在高峰期時,增加的數據庫活動會影響數據庫的性能,通過使用工作負載管理( WLM ),我們可以預先確定適當的資源分配、活動的優先級劃分和排隊選項來高效地處理工作,從而可以平滑高峰工作負載。在您定義這些指示后,數據服務器使用它們來分配資源和劃分工作的優先級。例如,您可以使工作遠離流氓查詢的影響,這些查詢使用過量的數據庫資源,因此會對系統上運行的其他查詢帶來負面影響并可能會影響整個數據庫。通過使用閾值,您可以使用許多不同特征(如執行時間或系統臨時表空間使用量)來定義系統內可接受的查詢行為,并定義對不按要求執行的任何查詢要執行哪些操作。這些操作包括收集關于查詢的詳細信息的功能以及自動取消查詢的功能。

另外,通過使用 DB2 V9.5 新增的許多表函數,我們可以動態的監視數據庫活動,可以讓我們清楚哪個工作當前正在系統上運行、它在分區上的分布情況以及是否有特定的活動可能導致數據服務器上發生資源爭用情況。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品大陆在线观看| 在线播放国产精品| 国产区精品在线观看| 欧美性极品xxxx做受| 欧美日韩久久久久| 欧美成人全部免费| 亚洲性生活视频| 97婷婷大伊香蕉精品视频| 视频直播国产精品| 国产精品美乳一区二区免费| 成人国产精品av| 超碰97人人做人人爱少妇| 欧美日韩在线观看视频小说| 欧美日韩国产中文精品字幕自在自线| 2020国产精品视频| 日韩免费高清在线观看| 精品精品国产国产自在线| 亚洲小视频在线| 亚洲国产精品久久| 国产啪精品视频| 久久精品这里热有精品| 国产啪精品视频网站| 91在线免费看网站| 2019中文字幕在线观看| 亚洲欧美日韩精品久久亚洲区| 国产精品麻豆va在线播放| 国产午夜精品全部视频在线播放| 高清视频欧美一级| 国产精品一区二区三区久久| 亚洲国产精品va在线| 亚洲国产精彩中文乱码av在线播放| 国产精品高清在线观看| 欧美日韩精品二区| 久久躁日日躁aaaaxxxx| 久久精品国产亚洲一区二区| 欧美日韩中文字幕在线视频| 精品无人区太爽高潮在线播放| 国产精品69久久久久| 亚洲а∨天堂久久精品9966| 一区二区三区美女xx视频| 亚洲性视频网站| 69影院欧美专区视频| 久久99久久99精品中文字幕| 青青草国产精品一区二区| 中日韩美女免费视频网址在线观看| 成人网欧美在线视频| 欧美日韩久久久久| 欧美精品精品精品精品免费| 国产精品亚洲综合天堂夜夜| 九九久久久久久久久激情| 爽爽爽爽爽爽爽成人免费观看| 7777精品久久久久久| 国产999精品| 欧美裸体男粗大视频在线观看| 亚洲性视频网址| 日韩欧美中文免费| 久久久久久12| 91国自产精品中文字幕亚洲| 深夜福利一区二区| 国产z一区二区三区| 97国产精品人人爽人人做| 国产97在线亚洲| 91精品视频在线看| 欧洲成人免费视频| 欧美风情在线观看| 色婷婷亚洲mv天堂mv在影片| 九九热精品视频在线播放| 久久综合88中文色鬼| 久久中文字幕视频| 黑人巨大精品欧美一区二区一视频| 国产aⅴ夜夜欢一区二区三区| 亚洲人成网站999久久久综合| 日韩精品视频中文在线观看| 成人免费观看49www在线观看| 欧美xxxx14xxxxx性爽| 成人黄色片网站| 亚洲成人久久一区| 免费成人高清视频| 日韩av在线电影网| 两个人的视频www国产精品| 亚洲精品女av网站| 国产亚洲成av人片在线观看桃| 亚洲精选在线观看| 亚洲精品国偷自产在线99热| 欧美一级片在线播放| 久久久久国产一区二区三区| 亚洲人成毛片在线播放| 国产成人精品久久亚洲高清不卡| 国产一区二区三区日韩欧美| 亚州欧美日韩中文视频| 亚洲精品网站在线播放gif| 欧美高清视频一区二区| 欧美国产极速在线| 7777kkkk成人观看| 日韩亚洲在线观看| 国产精品1区2区在线观看| 欧美主播福利视频| 亚洲片国产一区一级在线观看| 久久91亚洲精品中文字幕| 中文在线资源观看视频网站免费不卡| 欧美日韩不卡合集视频| 91精品国产91久久久久久| 国产91|九色| 亚洲黄一区二区| 69视频在线播放| 成人免费大片黄在线播放| 97视频在线观看免费高清完整版在线观看| 国产精品久久77777| 欧美精品一区二区三区国产精品| 精品久久久999| 91久久夜色精品国产网站| 91精品国产自产在线| 中文字幕v亚洲ⅴv天堂| 日日噜噜噜夜夜爽亚洲精品| 欧美精品成人在线| 中文字幕亚洲天堂| 日韩在线激情视频| 91豆花精品一区| 国产精品久久久久久久久久ktv| 欧美黑人一级爽快片淫片高清| 久久久视频免费观看| 日韩在线视频免费观看| 国产精品高清免费在线观看| 亚洲视频网站在线观看| 日韩在线精品一区| 成人av在线网址| 91精品国产自产在线老师啪| 日韩色av导航| 欧美诱惑福利视频| 国产成人在线一区| 久久久女人电视剧免费播放下载| 亚洲精品久久久久国产| 成人精品一区二区三区电影黑人| 亚洲综合精品一区二区| 伊人久久男人天堂| 亚洲成人亚洲激情| 国产精品7m视频| 乱亲女秽乱长久久久| 国产一区二区三区18| 黄网动漫久久久| 日本精品一区二区三区在线| 久久99久国产精品黄毛片入口| 亚洲区中文字幕| 91在线高清视频| 亚洲天堂免费在线| 久久久久久久久久久免费精品| 欧美大全免费观看电视剧大泉洋| 日韩中文字幕精品视频| 亚洲成年人在线| 亚洲第一页在线| 97在线观看免费高清| 91热精品视频| 久久韩国免费视频| 亚洲综合日韩在线| 欧美国产第二页| 久久精品免费播放| 亚洲精品mp4| 中文字幕亚洲综合久久| 亚洲综合在线播放| 日韩精品电影网| 国产精品免费电影| 热久久99这里有精品| 亚洲影视九九影院在线观看| 日韩精品在线免费观看|