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

DB2 通用資料庫進程全圖鑑:Linux/UNIX/Windows 進程對照、功能解析與實戰診斷

     編輯:DB2 教學

理解 DB2 進程模型是效能調優、故障診斷、高可用腳本編寫的基石。本文系統梳理 DB2 UDB V8 在 Linux/UNIX/Windows 上的進程/執行緒分類、命名規則、觸發條件與實戰案例,附完整字母序索引表供快速查閱。

進程模型核心概念

  • 代理程序: 代表應用程式執行資料庫工作的「工作者」。
    • 協調代理程序: 處理所有客戶端連接請求(本地 IPC/遠程 TCP),協調子代理工作。
    • 子代理程序: `INTRA_PARALLEL=YES` 時由協調代理分派執行並行查詢片段。忙碌時為 `db2agntp`,閒置時為 `db2agnta`(駐留代理池,受 `MAXAGENTS`/`NUM_POOLAGENTS` 控制)。
  • 平台差異: Linux/UNIX 以**進程**呈現;Windows 僅單一 `db2syscs.exe` 進程,內部以**執行緒**實現每個 EDU(引擎分派單元)。

進程分類完整表(節錄關鍵類別)

實例級常駐進程(無連接、無作用資料庫時)

進程名功能適用
db2sysc主資料庫引擎控制器,核心進程所有
db2gds全域守護衍生器,啟動所有 UNIX EDUUNIX
db2wdog看門狗,傳播信號確保實例級清理UNIX
db2syslog系統日誌記錄器(UNIX 需配置 syslog.conf)所有
db2ipccmIPC 通訊管理器,處理本地連接所有
db2tcpcmTCP 通訊管理器,監聽遠程連接所有
db2snacmSNA/APPC 通訊管理器所有
db2fcmdFCM 快速通訊管理器,分區間通訊多重分區
db2fmcd / db2fmd故障監視器協調器/守護器UNIX
db2cart日誌歸檔器(需 USEREXIT)所有
db2rebal表空間容器新增後的資料重平衡器所有
db2pdbc並行資料庫控制器,處理遠程節點請求多重分區
db2resyn雙階段提交重新同步管理器所有
db2govdDB2 Governor 反應式管理守護器所有
db2panic緊急代理,無閒置代理時處理緊急請求多重分區
db2fmtlg預分配日誌檔(LOGRETAIN ON + USEREXIT OFF)所有
db2chkau審計日誌記錄器所有
db2ckpw用戶認證檢查器(AUTHENTICATION=SERVER 時)UNIX/Linux
db2disp連接集中器分派器所有

每連接/每作用資料庫進程

進程名功能觸發條件
db2agent協調代理程序每連接一個(除非連接集中器)
db2agntp活躍子代理INTRA_PARALLEL=YES 且有並行工作
db2agnta閒置子代理INTRA_PARALLEL=YES,工作完成後
db2agnsc並行恢復代理前滾/重啟恢復期間
db2dlock本地死鎖偵測器每資料庫分區一個
db2glock全域死鎖偵測器目錄分區,多重分區環境
db2loggr日誌讀取器回滾/恢復/前滾時
db2loggw日誌寫入器,刷新日誌緩衝區到磁碟資料庫作用中
db2logts表空間日誌歷史收集器,加速表空間前滾資料庫作用中
db2pclnr緩衝池頁面清除器,異步寫髒頁NUM_IOCLEANERS 決定數量
db2pfchr緩衝池預讀器,異步預讀資料/索引NUM_IOSERVERS 決定數量
db2estor擴充儲存區頁面移動器啟用擴充儲存區時
db2event事件監視器進程每啟用的事件監視器一個

工具類進程(備份/恢復/載入/重組)

  • `db2bm`:備份/恢復緩衝區操作器(每緩衝區一個)
  • `db2fmp`:受保護模式執行 SP/UDF(替代舊 `db2udf`/`db2dari`)
  • `db2reorg`:線上就地重組進程(V8.1 新增)
  • LOAD 相關:`db2lbmX`(緩衝區操作)、`db2lfrmX`(格式化)、`db2lrid`(索引 RID 建構)、`db2lmr`(媒體讀取)、`db2lmwX`(媒體寫入)、`db2lpart`(分區子代理)、`db2lload`(載入子代理) 等,多分區環境下大量並行進程協同工作。

常用可執行檔與 Windows 服務

名稱說明
db2 / db2bpCLP 前台/持久後台進程
db2cmdWindows 命令視窗啟動器(綁定前後台執行緒)
db2start / db2star2啟動引擎使用者命令 / 真實啟動程序
db2stop / db2stop2停止引擎使用者命令 / 真實停止程序
db2dasrrm.exe管理伺服器進程(Control Center 遠程管理)
db2syscs.exeWindows 主引擎服務(EDU 為執行緒)
db2licd.exe授權守護程序
db2sec.exeWindows 認證檢查器

實戰診斷案例

案例一:神秘的 CPU 飆高 → 頁面清除器狂奔

電商網站響應時間間歇性惡化,快照無異常。`ps -ef` 發現 `db2pclnr` 佔用 90%+ CPU。根因:`NUM_IOCLEANERS` 設定過大、檢查點間距太短、緩衝池太小導致髒頁爆量。調優後吞吐量提升 50%+。

案例二:查詢全面變慢 → 重平衡在跑

效能調優現場,應用列表無長跑查詢,但 `db2rebal` 進程存在。客戶承認早間給 40GB 表空間新增容器,觸發非同步重平衡。等待完成後效能恢復。

進程與診斷日誌關聯

`db2diag.log` 記錄含 `PID` 及進程名(如 `db2agent (SAMPLE)`),對照進程功能即可快速定位錯誤上下文。

完整字母序索引表(74 項)

文末附表 7,涵蓋所有進程/服務/可執行檔名稱與對應詳細表格連結,支援快速查閱。

觀察範例(AIX `ps -ef`)

  • `db2start` 後:`db2wdog` → `db2gds` → `db2sysc` → `db2ipccm`/`db2resyn`/`db2srvlst`...
  • `NUM_INITAGENTS=5` 時:顯示 5 個 `db2agent (idle)`。
  • 連接 `SAMPLE` 後:出現 `db2agent (SAMPLE)`、`db2loggr`、`db2loggw`、`db2dlock`、`db2pclnr`、`db2pfchr` x3、`db2event`... 對應配置參數 `NUM_IOCLEANERS=1`、`NUM_IOSERVERS=3`。
  • `CONNECT RESET` 後:`db2agent (SAMPLE)` → `db2agent (idle)`(因 `NUM_POOLAGENTS>0` 保留池中)。

掌握進程全貌,讓您從「看進程名發呆」進化為「看進程名懂狀態、懂配置、懂調優」,成為真正的 DB2 內核級專家。

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