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

DB2 9.5 WLM 閾值機制深度解析:預測性與反應性閾值的建立與實戰

     編輯:DB2 教學

閾值核心概念

  • 作用域:Database / Service Superclass / Service Subclass / Work Action / Workload。
  • 執行範圍:Database / Partition / Workload Occurrence。
  • 觸發時機:
    • Predictive(預測性/前觸發):活動開始前,依編譯器估算值判斷。
    • Reactive(反應性/後觸發):活動運行中,於檢查點抽樣實際資源用量判斷。
  • 違規動作:STOP EXECUTION(終止)/ CONTINUE(繼續)/ COLLECT ACTIVITY DATA(採集詳細資訊送事件監視器)。
  • 不適用語句:COMMIT、ROLLBACK、SAVEPOINT、ROLLBACK TO SAVEPOINT。

常用閾值謂詞完整表

謂詞意義定義域執行範圍備註
TOTALDBPARTITIONCONNECTIONS > n分區協調器連接數上限DatabasePartition0 表示阻擋新連接
TOTALSCPARTITIONCONNECTIONS > n服務父類分區協調器連接數上限Service SuperclassPartition
AND QUEUEDCONNECTIONS > n / UNBOUNDED超額連接排隊大小同上同上UNBOUNDED 不觸發動作
CONNECTIONIDLETIME > n (DAY|HOUR|MINUTE)連接空閒上限(粒度 5 分鐘,上限 2.147G 秒)Database / Service SuperclassDatabase
CONCURRENTWORKLOADOCCURRENCES > n分區並發工作負載實例數上限WorkloadWorkload Occurrence
CONCURRENTWORKLOADACTIVITIES > n工作負載並發協調器+嵌套活動數上限WorkloadWorkload Occurrence
CONCURRENTDBCOORDACTIVITIES > n所有分區並發協調器活動數上限Database / Work Action / Service Superclass / SubclassDatabase0 阻擋新活動
AND QUEUEDACTIVITIES > n / UNBOUNDED超額活動排隊大小同上同上
ESTIMATEDSQLCOST > bigint優化器估算成本上限(僅 DML 協調器活動及用戶邏輯嵌套 DML)Database / Work Action / Service Superclass / SubclassDatabasePredictive
SQLROWSRETURNED > n返回客戶端行數上限同上DatabaseReactive
ACTIVITYTOTALTIME > n (DAY|HOUR|MINUTE)活動總耗時上限(含排隊,粒度 5 分鐘)Database / Service SuperclassDatabase
SQLTEMPSPACE > n (K|M|G)系統暫存表空間使用上限Database / Service SuperclassPartitionReactive

實戰範例 1:阻擋高成本查詢(Predictive,Database 級)

create threshold LargeQuery for service class SUPER_CLASS activities
enforcement database when ESTIMATEDSQLCOST > 100000 stop execution;

測試:用戶 RHETTE 執行大查詢 → SQL4712N 已超過閾值 LARGEQUERY 原因碼=7。

實戰範例 2:限制同一 SQL 並發執行數(Reactive,Service Subclass 級)

create threshold MYCUNCURRENT for service class subclass_db2admin under super_class activities
enforcement database when CONCURRENTDBCOORDACTIVITIES > 1 stop execution;

測試:視窗 2、3 近乎同秒執行相同查詢 → 視窗 2 成功、視窗 3 報 SQL4712N 原因碼=6(並發 >1 被阻擋)。

閾值管理指令

  • 建立:CREATE THRESHOLD ...
  • 啟用/停用:ALTER THRESHOLD <name> ENABLE/DISABLE
  • 修改:ALTER THRESHOLD <name> ...
  • 刪除:DROP THRESHOLD <name>(先 DISABLE)
  • 查詢:SELECT * FROM SYSCAT.THRESHOLDS

清理示範

alter threshold MYCUNCURRENT disable; drop threshold MYCUNCURRENT;
alter threshold LargeQuery disable; drop threshold LargeQuery;

設計建議

  1. 優先使用 Predictive 閾值 攔截顯然過重的工作,降低系統衝擊。
  2. 搭配 Reactive 閾值 捕捉運行時異常(如暫存表空間暴增、執行時間過長)。
  3. 針對關鍵業務服務類設定較寬鬆閾值,對批次/報表類設定較嚴格閾值,實現分級管控。
  4. 善用 AND QUEUEDACTIVITIES 緩衝突發並發,避免大量錯誤衝擊應用體驗。
  5. 定期檢視 SYSCAT.THRESHOLDS 與事件監視器記錄,調整閾值參數適應負載變化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved