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

DB2 UDB 基礎效能調校指南:系統環境配置篇(Linux/UNIX/Windows)

     編輯:DB2 教學

什麼是效能?為何需要有組織的調校?

DB2 UDB 8.1 可運行於簡單單一系統或複雜客戶-伺服器環境。效能反映電腦系統執行指定任務的具體表現,主要度量:系統回應時間、計算能力、可用性。每項度量受硬體、系統/資料庫配置、並發使用者數與類型、應用負載等多因素影響。

調校需有組織、有目標、可量測,避免盲目試錯。DBA 應從以下層面逐步調校:系統環境配置 → 實例配置 → 資料庫配置 → 資料庫設計 → 應用程式設計。本文聚焦系統環境配置(Linux/UNIX/Windows),後續文章將覆蓋其餘層面。

通用調校七大鐵律

  1. 先查已知硬硬體/軟體問題:補丁包或硬體升級可能直接解決,別在真正瓶頸未明前盲目加記憶體或網卡
  2. 全系統視角:調整一處影響全局(如預留過多記憶體給後台程序,預存程序將無空間可用)
  3. 分層級測量與重新配置:單次調校不超過一個系統層級(硬體、OS、通訊軟體、資料庫、SQL、應用),否則無法歸因
  4. 一次只改一個參數:同層級內亦一次僅調一個變數(登錄變數、實例/資料庫配置參數等)
  5. 建立回滾機制:用 Shell 腳本/批次檔記錄變更,保留原值註解行,需回滾時取消註解重跑
  6. 針對明確問題調校:調校策略必須直擊問題根因,否則收效微且為後續增添麻煩
  7. 遞減報酬法則:最高效收益通常來自初期努力,後續邊際效益遞減、成本遞增

DB2 系統登錄變數調校:關鍵參數詳解

DB2 安裝後使用一組登錄變數配置系統,部分對效能關鍵,部分影響微乎其微。修改這些變數影響整個系統,須謹慎操作。

所有平台通用(Linux/UNIX/Windows)

變數預設說明與建議
DB2_APM_PERFORMANCEOFF控制存取計畫管理器 (APM) 是否調整 SQL 快取行為。僅非生產環境設 ON。ON 時會出現 "Out of package cache" 錯誤、記憶體用量增加、PRECOMPILE/BIND/REBIND 無法執行、套件無法失效/執行。
DB2_AVOID_PREFETCHOFF災難復原期間是否執行預讀。ON 時停用預讀。
DB2BPVARS-指定緩衝池調校參數檔位置,含 NO_NT_SCATTER、NT_SCATTER_DMSFILE、NT_SCATTER_DMSDEVICE、NT_SCATTER_SMS、NUMPREFETCHQUEUES、PREFETCHQUEUESIZE。_SCATTER 參數預設 0 (OFF),控制表空間容器 scatter read;其他參數提升預讀效能。註:Windows 下 DB2NTNOCACHE=ON 時 _SCATTER 參數始可設 ON。
DB2CHKPTROFF是否執行輸入指標檢查。
DB2_ENABLE_BUFPDOFF是否使用中間緩衝改進查詢效能。
DB2_EXTENDED_OPTIMIZATIONOFF查詢優化器是否使用優化擴展改進查詢效能。
DB2MAXFSCRSEARCH5插入記錄時搜尋可用空間控制記錄 (FSCR) 數量。-1 搜尋全部。小值優化插入速度,大值優化空間重用。範圍 -1 或 1~33554。
DB2MEMMAXFREE8,388,608 bytes每個 DB2 代理程式保留可用記憶體上限。範圍 0~2.0e+32 bytes。
DB2_OVERRIDE_BPF空指定資料庫啟動或首次連線時建立的緩衝池大小(4K 頁數)。記憶體不足導致故障時極有用(真實記憶體不足或配置不當)。
DB2PRIORITIES平台相關控制 DB2 行程與執行緒優先權。
DB2_SORT_AFTER_TQNO分區資料庫環境下,接收端要求排序且節點數相等時優化器與表佇列協作模式。NO:傳送端排序+接收端合併;YES:接收端收齊後排序。
DB2_STPROC_LOOKUP_FIRSTOFFDB2 伺服器是否先在 sqllib/function、sqllib/function/unfenced 目錄查找再執行 DARI/預存程序目錄查找。
DB2_HASH_JOINNO編譯存取計畫時是否允許 Hash Join。
DB2_PARALLEL_IONULL讀寫表空間容器時是否使用並行 I/O。值為 * 或 NULL。
DB2_STRIPED_CONTAINERSNULL表空間容器 ID 標籤是否佔用部分/全部 RAID 磁碟條帶。RAID 裝置建立表空間時擴展大小等於或為條帶大小倍數,但頁容器標記導致擴展無法對齊條帶。設 ON 可避免存取過多實體磁碟。注意:此變數說明與 DB2_PARALLEL_IO 關聯緊密。

UNIX 平台專用 (AIX/HP-UX/其他)

變數預設說明
DB2MEMDISCLAIMYESAIX 專用。YES 時程式結束釋放部分/全部記憶體(依 DB2MEMMAXFREE)。空值釋放全部,有值釋放至上限。保證記憶體可被其他程序使用。
DB2_MMAP_READYESAIX 專用。搭配 DB2_MMAP_WRITE,允許 DB2 for AIX 使用 mmap 作為 I/O 交錯法,避免多程序寫入同檔不同扇區造成 OS 鎖定。
DB2_MMAP_WRITEYESAIX 專用。同上,作為 I/O 預備方法。
DB2_PINNED_BP-AIX/HP-UX。指定資料庫使用的全域記憶體(含緩衝池)是否鎖定在系統主記憶體以獲更穩定效能。

Windows 平台專用

變數預設值說明
DB2NTMEMSIZEDBMS: 16,777,216
FCM: 22,020,096
DBAT: 33,554,432
APLD: 16,777,216
Windows 要求所有共用記憶體片段初始化時儲於動態連結庫以保證位址匹配。多數情況預設值足夠。
DB2NTNOCACHEOFF檔案系統快取是否執行(不含 LONG/LOB 資料)。關閉可釋放更多記憶體給緩衝池/排序堆。
DB2NTPRICLASSNULL配合 DB2PRIORITIES 設定 DB2 實例程序 (DB2SYSCS.EXE) 優先權類別:NORMAL_PRIORITY_CLASS(預設)、REALTIME_PRIORITY_CLASS(R)、HIGH_PRIORITY_CLASS(H)。值為 R/H/其他。
DB2NTWORKSET1,1DB2 可用的最小/最大工作集大小。預設無分頁調度時工作集隨意增大,分頁調度時限制 ~1MB。此變數可覆蓋預設。格式:最小值,最大值(0 表無上限)。

如何檢視與修改登錄變數

DB2 UDB V8.1 提供兩種方式:

  1. DB2 登錄管理工具:從 Configuration Assistant 存取
  2. 系統指令 db2set:
db2set [選項] [變數=值]
# 選項([] 為必需,<> 為可選):
# -g  全域層級
# -i <實例名>  實例層級
# -p <分區號>  分區層級
# -a  顯示所有層級
# -l  列出已設定變數
# -v  詳細模式
# <變數>=<值>  設定變數
# <變數>=       刪除變數設定

無選項執行 db2set 將列出已設定變數與當前值。

後續預告

DB2 UDB 效能調校是漫長過程。本專欄涵蓋通用調校原則與系統登錄變數配置。下一期將闡述實例與資料庫配置參數的最佳化調校方法。

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