痛點:誰佔用了資源?如何預防失控查詢?
數據倉庫管理員常面臨:特定應用/用戶執行低效查詢拖垮整庫效能。DB2 9.5 引入 **Workload Manager (WLM)**,取代 Query Patroller 與 Governor,提供**全活動監控** (含 DML、DDL、LOAD、預存程序) 與**事前閾值攔截**能力。
WLM 核心實體與關係
- Workload:依連接屬性 (用戶、應用名等) 分組的工作集合,含映射規則。
- Service Class:資源分配與監控單位。兩層:Superclass (連接層) → Subclass (活動層)。
- Work Action Set / Work Class Set:活動分類集合,可定義邊界值 (如估計開銷 > N)。
- Work Action:具體活動類別 (READ、DML、DDL、LOAD、CALL 等)。
- Thresholds & Limits:行數、成本、臨時表空間、執行時間等閾值,違規可強制終止、收集、映射降級。
- Activity:單一可執行數據庫操作。
關係圖譜:Workload → 映射 → Superclass → Subclass ← 映射規則 ← Work Class Set/Action Set → Thresholds。
Design Studio 可視化配置實戰
環境:DB2 Warehouse 9.5 Client 安裝 WLM 插件 → Design Studio 啟動 → 註冊數據庫 `DWESAMP` → 建立 Data Warehouse Project → 新增 WLM Scheme `WLM_JKSales` (選 "Create by objective")。
案例一:限制 db2admin 查詢返回行數 ≤ 15
- 建立 Superclass `DB2ADMIN_SC`
- 建立 Work Identity `DB2ADMIN_WID` (連接屬性 USER=db2admin) 關聯上述 Superclass
- 建立 Work Type Set `DB2ADMIN_WTS` → Work Type `READ_WORKTYPE` (類型 READ)
- 建立 Limit:Domain=Subclass、Work Identity=DB2ADMIN_WID、Work Type=READ_WORKTYPE、Condition: SQL Rows Returned > 15 → Action: STOP EXECUTION
- Validate → Execute (生成 WLM 專用 DDL) → 資料庫執行
驗證:`select * from DWH.CL` (超過 15 行) → 報錯 `SQL Rows Returned Rules exceeded`,查詢自動終止。
案例二:限制 db2admin DML 預計成本 ≤ 200 timerons
- 在 `DB2ADMIN_SC` 下建立 Subclass `DML_WORKTYPE_SUBCLASS`
- 在 `DB2ADMIN_WTS` 新增 Work Type `DML_WORKTYPE` (類型 DML) → Mapping Rule 映射至上述 Subclass
- 在 Subclass 下建立 Control Rule:Condition: Estimated SQL Cost > 200 → Action: STOP EXECUTION
- Delta Execute (僅部署新增物件) → 驗證:全表 UPDATE 觸發閾值被終止。
優勢總結
- **事前攔截**:預估成本超標即阻擋,而非事後殺進程。
- **全活動覆蓋**:不限 SELECT,涵蓋 DDL、LOAD、CALL 等。
- **可視化建模**:Design Studio 圖形化編輯器降低 DDL 學習曲線。
- **分層資源管控**:Superclass/Subclass 機制支援多租戶、多優先級 SLA。