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

整合 DB2 與 AIX WLM:打造完整的工作負載管理解決方案

     編輯:DB2 教學

前言:DB2 WLM 的缺口與 AIX WLM 的補位

大型系統常需管理系統資源與負載。DB2 V9.5 引入 Workload Management (WLM),整合替代了 Governor 與 Query Patroller。但 DB2 WLM 缺少關鍵能力:限制 CPU 資源。實際案例中這點備受重視,單靠 DB2 WLM 無法提供完整方案。本文透過實踐示範如何結合 DB2 與 AIX WLM 給出完整解決方案,為讀者搭建入門階梯。

DB2 WLM 回顧:閾值清單中無 OS 資源

DB2 WLM 可用閾值包括:estimatedsqlcost、sqlrowsreturned、sqltempspace、activitytotaltime、connectionidletime、concurrentworkloadoccurrences、concurrentdbcoordactivities、concurrentworkloadactivities、totaldbpartitionconnections、totalscpartitionconnections。顯然無操作系統資源相關內容。雖創建 Service Class 可指定代理程式優先級,但優先級非客戶所需,且 10 個最低優先級代理程式可能比 1 個高優先級代理程式獲取更多資源,無法確切保證某應用/用戶不超用給定資源量。

實際常見需求:限制次要應用用戶 CPU 使用率 <10%,或按 3 應用負載特徵與重要程度分配 50%/30%/20% CPU。此時需 AIX WLM 介入。

AIX WLM 基礎:資源份額與限制兩大模式

AIX WLM 管理 CPU、物理記憶體、I/O,可設定資源最大/最小值或按百分比分配。架構與 DB2 WLM 相似,同樣透過 Service Class 分類管理,兩層次:Superclass 與 Subclass。資源管理兩種方式:

Class Resource Shares(共享模式)

定義每個服務類資源佔用比例。例:A、B、C 三類 CPU share 值 50、30、20(非百分比,範圍 1-65536),則可用 CPU 比例為 50%、30%、20%。若 C 非活躍,A 可用 (50/(50+30))×100%=62.5%。若新增 D share=100,A 可用 (50/(50+30+20+100))×100%=25%。需注意層次,父類與子類影響分配範圍與比例。

Class Resource Limits(限制模式)

指定資源最小/最大百分比:

  • min:最小資源百分比,預設 0
  • softmax:資源緊張時可獲得最少比例,無衝突可超過,預設 100
  • hardmax:無衝突時可獲得最大比例,預設 100

規則:min≤max;同層級同範圍所有類 min 之和 ≤100;softmax≤hardmax。

整合關鍵:Outbound Correlator 實現雙向映射

兩個 WLM 結合,關鍵在將 DB2 WLM 服務類與 AIX WLM 服務類一一關聯(映射)。創建 DB2 WLM 服務類時使用 OUTBOUND CORRELATOR 選項指定關聯名稱。用 DB2 WLM 將用戶/程式定義為服務類,再透過 Outbound Correlator 與 AIX WLM 服務類關聯,即實現對特定用戶/應用限制 CPU。

圖 1. 一對一全映射

圖 2. 僅映射父類

圖 3. 僅映射子類

映射靈活無過多限制,但設計者必須清晰知曉每個服務類實際資源比例,因父類與子類控制資源分配作用範圍,從 AIX 作用域映射到 DB2 後實際作用域必須清晰。

三大必知限制

  1. 僅能管理 CPU:記憶體方面,DB2 有代理私有記憶體(如 statement heap)與大量共享記憶體(緩衝池等),難確定某代理具體用量。I/O 同理,一條 SQL 觸發預讀進程、日誌寫進程等多進程動作。僅管 CPU 完全足夠。
  2. DB2 WLM 不支援 AIX WLM 繼承特性:啟用繼承會導致所有子線程/進程繼承父屬性,使 DB2 WLM 基於用戶標識定義的服務類失效。AIX WLM 預設啟用繼承,需顯式禁用。
  3. 使用 AIX WLM 管理 CPU 後,DB2 WLM 創建服務類不可設定進程優先級:無必要,語法也不允許。

實戰案例:限制只讀用戶 testusr 不影響主業務

需求拆解

  • 系統 A 開放只讀用戶 testusr 給系統 B 查數據
  • 限制 testusr 僅能讀取
  • testusr 訪問不佔用過多性能影響主業務
  • 除 testusr 外其他用戶/程式不受限

方案設計

只讀權限用資料庫權限解決。testusr 不影響主業務較籠統,轉化為技術指標:

  • AIX WLM limits 模式限制 testusr 總體 CPU 使用率(選 limits 因 shares 需定義所有用戶分配,testusr 外不受限)
  • CPU 限制不夠,還有低 CPU 高影響手段(如佔滿磁碟頻寬)。進一步限制:
  • DB2 WLM CONCURRENTDBCOORDACTIVITIES 閾值控制並發 SQL 執行數量(退而求次,未用 Query Patroller 限連接數)
  • DB2 WLM CONNECTIONIDLETIME 限制會話閒置等待時間,防閒置會話浪費資源
  • DB2 WLM SQLTEMPSPACE 限制臨時表空間容量(耗資源 SQL 常因連接與排序,需排序區與臨時表空間)

未用 ESTIMATEDSQLCOST (timerons) 因其綜合 CPU/I/O 分值,允許 testusr 對大表全表掃描時 timerons 值不穩定,建議按應用類型區分(OLTP 較易確定範圍)。

方案實施步驟

  1. 創建 DB2 WLM 服務父類(含 outbound correlator)
    CREATE SERVICE CLASS sc_test OUTBOUND CORRELATOR '_ScTest'
  2. 創建 Workload 綁定用戶
    CREATE WORKLOAD wl_test SESSION_USER ('TESTUSR') SERVICE CLASS sc_test; GRANT USAGE ON WORKLOAD wl_test TO PUBLIC;
  3. 創建服務子類
    CREATE SERVICE CLASS sc_test_queries UNDER sc_test;
  4. 創建 Work Class Set(僅讀操作)
    CREATE WORK CLASS SET wcs_queries (WORK CLASS wc_read WORK TYPE READ);
  5. 創建 Work Action Set 映射活動到子類
    CREATE WORK ACTION SET was_queries FOR SERVICE CLASS sc_test USING WORK CLASS SET wcs_queries (WORK ACTION wa_read ON WORK CLASS wc_read MAP ACTIVITY TO sc_test_queries);
  6. 創建閾值
    CREATE THRESHOLD th_conn FOR SERVICE CLASS sc_test ACTIVITIES ENFORCEMENT DATABASE WHEN CONCURRENTDBCOORDACTIVITIES > 2 STOP EXECUTION;
    CREATE THRESHOLD th_conn_idle FOR SERVICE CLASS sc_test ACTIVITIES ENFORCEMENT DATABASE WHEN CONNECTIONIDLETIME > 5 MINUTES STOP EXECUTION;
    CREATE THRESHOLD th_queries_tmp FOR DATABASE ACTIVITIES ENFORCEMENT DATABASE PARTITION WHEN SQLTEMPSPACE > 10 M STOP EXECUTION;
  7. 配置 AIX WLM(root 權限)
    cd /etc/wlm; cp -r template inventory; wlmcntrl -d inventory
  8. 創建 AIX WLM 服務類
    mkclass -a inheritance=no -c hardmax='10' aixscquery(硬限制 10% CPU,禁用繼承)
  9. 配置映射規則
    vi /etc/wlm/inventory/rules 尾部添加:aixscquery - - - - - _ScTest
  10. 重啟 AIX WLM
    wlmcntrl -o; wlmcntrl -a

效果驗證

CPU 資源限制

圖 4. db2sysc 線程信息驗證映射成功

啟動多少並發(閾值限制 2 並發),CPU 始終 <10%。

圖 5. CPU 使用情況

DB2 WLM 閾值效果

  • 並發活動:建 3 個會話跑長 SQL,第 3 個報 SQL4712N TH_CONN 超限
  • 閒置時間:超 5 分鐘再跑命令報 SQL1224N
  • 排序空間:小排序無問題,超 10MB 報 SQL4712N TH_QUERIES_TMP 超限

綜合來看,DB2 WLM 與 AIX WLM 結合基本滿足工作負載管理絕大部分需求,效果達標。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved