首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

DB2 9.5 工作負載管理(WLM)實戰:工作類與工作動作完整指南

     編輯:DB2 教學

動態控制活動的三大存儲程序

程序用途參數
WLM_CANCEL_ACTIVITY取消正在執行或排隊的活動(application_handle, uow_id, activity_id) → 返回 SQL4725N
WLM_CAPTURE_ACTIVITY_IN_PROGRESS即時擷取活動詳細資訊送事件監視器(application_handle, uow_id, activity_id)
WLM_COLLECT_STATS收集並重設 WLM 物件統計(送活動統計事件監視器)()

所需識別碼可透過 WLM_GET_WORKLOAD_OCCURRENCE_ACTIVITIES 表函數取得。

實戰示範:取消失控大查詢

視窗 1(管理員)查詢活動識別碼

db2 -tvf get_wkld_activities.txt
SELECT t.application_handle, t.uow_id, t.activity_id, 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
81                 10     1           READ_DML      EXECUTING      2008-01-02-17.01.32

視窗 1 呼叫取消程序

db2 "call WLM_CANCEL_ACTIVITY(80, 7, 1)"
-- 返回狀態 = 0

視窗 2(執行大查詢的用戶)收到錯誤

SQL4725N 已取消該活動。 SQLSTATE = 57014

工作類(Work Class):依活動類型與成本分類

工作類型涵蓋語句
READ純 SELECT/SELECT INTO/VALUES INTO/XQuery(無 DML)
WRITEUPDATE/DELETE/INSERT/MERGE/含 DML 的 SELECT/XQuery
DMLREAD + WRITE 所有語句
DDLALTER/CREATE/COMMENT/DROP/FLUSH PACKAGE CACHE/GRANT/REVOKE/RENAME/SET INTEGRITY 等
CALLCALL 語句
LOADLOAD 作業
ALL以上任意類型

建立工作類集與工作類

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
);
  • timeroncost:優化器估算成本單位,結合 CPU 指令數與 I/O 掃描,非實際秒數。
  • 三級劃分:小型(≤1000)、中型(1000-100000)、大型(>100000)。

工作動作集與工作動作:觸發管控行為

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
);

動作語意解析

  • smallQueryAction:count activity → 該類別活動運行時計數器累增。
  • mediumQueryAction:collect activity data with details and values → 活動完成後送事件監視器,含 SQL 文本、編譯環境、輸入參數值。
  • largeQueryAction:when concurrentdbcoordactivities > 1 and queuedactivities > 1 stop execution → 並發協調器活動 >1 時排隊,排隊活動再 >1 時直接阻止執行(返回 SQL4712N)。

驗證測試:並發大查詢觸發阻擋

  • 視窗 1、2、3 同用戶並發執行大查詢(6 張 project 表聯結)。
  • 視窗 1、2 正常完成;視窗 3 報錯:SQL4712N 已超過閾值 ... 原因碼 = 6(排隊活動 >1 被阻擋)。

WLM 總結:為何需要工作負載管理?

  • 資源隔離與優先級:將不同業務工作映射至獨立服務類,分配 CPU/I/O 權重,避免流氓查詢佔滿資源。
  • 可預測性:預先定義閾值(執行時間、暫存表空間、並發數等),違規自動採集資訊或取消。
  • 平滑尖峰:高峰期透過排隊、優先級調度保障核心業務 SLA。
  • 即時可觀測:大量表函數(如 WLM_GET_WORKLOAD_OCCURRENCE_ACTIVITIES、WLM_GET_WORK_ACTION_SET_STATS)動態掌握活動分布與資源爭用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved