DB2 Capture 程式是 SQL Replication / Q Replication 複寫拓撲中的「心臟」,負責從來源資料庫日誌中擷取變更、寫入變更資料(CD)表,供 Apply 程式後續傳遞。掌握其內部進程模型與關鍵參數,是保障複寫低延遲、高穩定的前提。
| 進程 | 角色比喻 | 核心職責 | 關鍵參數 |
|---|---|---|---|
| 工作進程 | 「偵察兵」 | 持續讀取交易日誌(記憶體緩衝區 + 日誌檔),識別已提交交易,將變更寫入 CD 表;決定熱/冷啟動模式 | `COMMIT_INTERVAL`(寫入 CD 表頻率) |
| 修剪進程 | 「清潔工」 | 刪除已被所有目標表複寫的 CD 列;清理超過保留期限的孤兒資料 | `PRUNE_INTERVAL`(掃描週期)、`RETENTION_LIMIT`(保留上限) |
| 管理進程 | 「指揮官」 | 啟動/停止其他進程、處理控制訊號、維護捕捉狀態表 | 內部管理,極少手動干預 |
| 序列化進程 | 「交通管制」 | 確保多執行緒環境下 CD 表寫入順序一致性 | 內部管理 |
工作進程持續運行,非事件觸發。它從記憶體中的重做日誌緩衝區優先讀取已提交交易(Committed Transactions),批次寫入 CD 表。`COMMIT_INTERVAL` 控制「攒批寫入」頻率:
CD 表是暫存區,若不清理將無限增長。修剪進程執行兩種獨立邏輯:
參數調優鐵律:`RETENTION_LIMIT` 必須 > 最大可容忍的 Apply 停機時間 + 複寫追趕時間。設太短恐丟失未複寫資料;設太長則儲存浪費。建議:生產環境設 48~72 小時,並配合監控告警(CD 表列數、修剪落後量)。

總結:Capture 程式看似「讀日誌、寫 CD 表」簡單,實則是高併發、強一致、長運行的系統級服務。DBA 的核心價值在於:以業務 SLA 為錨,將 `COMMIT_INTERVAL`、`PRUNE_INTERVAL`、`RETENTION_LIMIT` 三參數調至「延遲可控、空間收斂、來源庫無感」的最佳三角區。