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

DB2 Workload Management 最佳實踐 (上):設計哲學、服務類架構與優先權映射策略

     編輯:DB2 教學

前言:為何需要工作負載管理?

伺服器整合趨勢下,單一 DB2 實例須同時服務 OLTP、報表、ETL、臨時查詢等異質負載。缺乏管制時,長跑查詢佔滿 CPU/I/O,導致核心交易逾時。DB2 Workload Manager (WLM) 提供「識別→分類→控制→監控」閉環,確保業務優先權在資源爭用時得到落實。

設計階段三大原則

  1. 理解工作負載:利用新監控功能 (WLM 表函數、事件監控器) 或既有 Query Patroller 中繼資料,掌握來源、頻率、資源消耗畫像。
  2. 映射業務優先權:將應用/請求對應至 SLA 或相對重要性 (High/Medium/Low 或 Short/Medium/Long)。
  3. 簡單啟動、漸進擴展:先建核心服務類與少數工作負載,驗證後再細化;閾值範圍越窄越精準 (建議掛在 Service Subclass)。

服務類架構:超類 + 子類的優先權階梯

安裝 DB2 9.5 即建立 SYSDEFAULTUSERCLASS (超類) 及其預設子類。建議自建一超類 (如 POWER) 含三子類:

子類優先權AGENT PRIORITYPREFETCH PRIORITY典型負載
HIGH_PRIOHigh-20 (最高)HIGHVIP 查詢、核心交易
MED_PRIOMedium0 (預設)MEDIUM一般報表、OLTP
LOW_PRIO (Default)Low20 (最低)LOW大量 ETL、臨時分析

推薦服務類實現 工作分配範例

  • 超類預設子類設為 LOW,未被 Work Action Set 導向的工作自動落入低優先權。
  • 勿將任何服務類 Agent Priority 設高於系統服務類 (SYSDEFAULTSYSTEMCLASS)。
  • 系統類建議同設 AGENT PRIORITY -20 PREFETCH PRIORITY HIGH 確保系統作業優先。

工作負載定義:精準識別連線來源

每個可能來源 (應用、用戶、部門、中介軟體) 建一 CREATE WORKLOAD,零效能負擔,利於未來擴充。關鍵連線屬性:

  • APPLNAME、SYSTEM_AUTH_ID、SESSION_AUTH_ID
  • CLIENT_USERID、CLIENT_APPLNAME、CLIENT_WRKSTNNAME、CLIENT_ACCTNG (可由中介軟體透過 WLM_SET_CLIENT_INFO 注入)

查詢現有連線屬性分布:

SELECT COUNT(*), SUBSTR(APPLICATION_NAME,1,10), SUBSTR(SYSTEM_AUTH_ID,1,10),
       SUBSTR(CLIENT_USERID,1,10), SUBSTR(CLIENT_APPLNAME,1,10), ...
FROM TABLE(WLM_GET_SERVICE_CLASS_WORKLOAD_OCCURRENCES('', '', -2))
GROUP BY ...;

工作動作集:依請求特徵二次分流

同一 Workload 內混合長短查詢時,用 WORK CLASS SET + WORK ACTION SET 依成本估計 (TIMERONCOST) 導向不同子類:

CREATE WORK CLASS SET control_cost (
  WORK CLASS long   WORK TYPE READ FOR TIMERONCOST FROM 2000001 TO UNBOUNDED,
  WORK CLASS medium WORK TYPE READ FOR TIMERONCOST FROM 20001 TO 2000000,
  WORK CLASS short  WORK TYPE READ FOR TIMERONCOST FROM 0 TO 20000
);

CREATE WORK ACTION SET query_cost FOR SERVICE CLASS POWER
USING WORK CLASS SET control_cost (
  WORK ACTION map_long  ON WORK CLASS long   MAP ACTIVITY TO LOW_PRIO,
  WORK ACTION map_short ON WORK CLASS short  MAP ACTIVITY TO HIGH_PRIO
);

亦可用於並發控制 (類 Query Patroller);並發閾值違背時 CONTINUE 只排隊不中止。

AIX Workload Manager 整合:作業系統級 CPU 管制

DB2 服務類透過 OUTBOUND CORRELATOR 映射至 AIX WLM 類/子類,DB2 內部 Agent Priority 失效,改由 AIX WLM 排程器依 Shares 或 Hard Max 分配 CPU:

ALTER SERVICE CLASS POWER OUTBOUND CORRELATOR 'Power';
ALTER SERVICE CLASS HIGH_PRIO UNDER POWER AGENT PRIORITY DEFAULT OUTBOUND CORRELATOR 'Power.HighPrio';
ALTER SERVICE CLASS LOW_PRIO UNDER POWER AGENT PRIORITY DEFAULT OUTBOUND CORRELATOR 'Power.LowPrio';

AIX 端建立對應類與規則檔 (application tag 對應 Correlator),wlmcntrl -d db2workload 啟用。兩種 CPU 管制策略:

  • Shares (彈性):chclass -c shares=90 db2Power.HighPrio; shares=10 db2Power.LowPrio,高負載時自動爭奪。
  • Hard Max (剛性):chclass -c hardmax=10 db2Power.LowPrio,無論系統閒忙皆限制低優先權上限,保證高優先權響應。推薦 Hard Max。

DPF 環境下,每台物理機需獨立配置同樣 AIX WLM,不像 DB2 WLM 可廣播。

完整實作圖譜

完整資料庫實現示例

驗證與調優

  • 運行已知負載,對比 WLM_GET_SERVICE_CLASS_WORKLOAD_OCCURRENCES 請求計數與行為統計。
  • 啟用 WLM 統計事件監控器收集歷史聚合資料。
  • db2look -d PROD -wlm -o wlm.def.out 匯出完整定義備份/遷移。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved