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

DB2 記憶體架構深度解析:四大記憶體集與調優實戰 (上)

     編輯:DB2 教學

DB2 記憶體四大集合架構

DB2 Memory Structure

所有平台架構一致。多分區環境下每個分區獨立擁有以下四大集合:

記憶體集分配時機釋放時機主要用途代表堆/池
Instance Shared Memorydb2startdb2stop實例級監控、稽核、節點間通訊mon_heap_sz, audit_buf_sz, fcm_num_buffers
Database Shared Memory資料庫啟動/首次連接資料庫停用/最後連接斷開緩衝池、鎖清單、套件快取、排序堆、實用程式堆bufferpool, locklist, pkgcache, sortheap, util_heap_sz
Application Group Shared Memory應用程式群組建立群組終止共享排序、臨時表、區段快取group_heap, appgroup_mem_sz
Agent Private Memory代理程式啟動代理程式終止私有排序、查詢運算子、游標狀態sortheap, statement heap, application heap

Instance Shared Memory 詳細管理

控制參數

  • instance_memory:總額度 (預設 AUTOMATIC,依各堆配置計算 + 溢位緩衝)
  • mon_heap_sz:監控堆
  • audit_buf_sz:稽核緩衝
  • fcm_num_buffers:FCM 緩衝 (僅分區實例)

配置模式差異

  • AUTOMATIC (預設):軟限制,峰值時允許超過個別堆配置,溢位緩衝吸收
  • 固定數值:硬限制,達到上限即報記憶體分配錯誤。建議保持 AUTOMATIC

實際使用量監控

db2 attach to 
db2 get dbm cfg show detail
# Size of instance shared memory (4KB) = AUTOMATIC(10313) → 42 MB 預留

db2start
db2mtrk -i -v
# Memory for instance
# FCMBP Heap: 17,432,576 bytes
# Database Monitor Heap: 180,224 bytes
# Other Memory: 3,686,400 bytes
# Total: ~21 MB 實際使用 (遠低於預留)
db2mtrk 顯示值可能超過配置參數,因軟限制允許峰值增長。

Database Shared Memory 核心組件

Database Shared Memory

  • 綠色實心方塊 = 資料庫啟動時全額配置 (如緩衝池、鎖清單)
  • 空心方塊 = 按需配置 (如 util_heap_sz 僅在備份/恢復/載入等工具啟動時配置)

主緩衝池

  • 資料庫共享記憶體最大塊
  • 至少一個,可依頁面大小 (4K/8K/16K/32K) 建立多個
  • EXTENDED STORAGE 選項可擴展為二級快取 (ESTORE),參數 num_estore_segs, estore_seg_sz

隱藏緩衝池 (安全網)

  • 啟動時自動建立 4 個小型緩衝池 (4K/8K/16K/32K 各一)
  • 系統目錄 SYSCAT.BUFFERPOOLS 不可見
  • 用途:主緩衝池配置過大導致無法啟動時,DB2 退回使用隱藏池啟動資料庫,發出警告 (SQLSTATE 01626),讓 DBA 連線調整主緩衝池大小

下篇預告

將詳細探討:
• 各平台 (AIX/Sun/HP/Linux/Windows) 記憶體模型差異與調優策略
• 實戰案例:客戶記憶體超配、緩衝池調優、ESTORE 效能分析
• 64 位環境下的新限制與最佳實踐

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