分區資料庫環境(DPF)下,大量資料匯入時的效能優化。版本支援:DB2 7.x、8.1 及以上跨平台版本。
DB2 IMPORT 內部使用的套件 db2uimpm.bnd 預設不啟用緩衝插入。透過 INSERT BUF 選項重綁,可批次累積資料再發送至分區,大幅減少網路往返。
db2 connect to <資料庫名>
db2 bind db2uimpm.bnd blocking all insert buf
db2uimpm.bnd 位於 sqllib\bnd 目錄。重綁後後續所有 IMPORT 自動受益。
指定 COMPOUND=N 後,IMPORT 每 N 筆資料才等待 SQL 回傳結果,而非逐筆同步。預設 N=1(逐筆)。
db2 import from data.ixf of ixf modified by compound=100 insert into target_table
上例每 100 筆為一批次,顯著降低客戶端/伺服端交互開銷。N 值建議 100~1000,視記憶體與記錄檔大小調整。
若表中已有資料,改用附加模式可跳過空間搜尋,直接在高水位線後寫入:
db2 alter table target_table append on
配合 IMPORT 使用,避免頁面分裂與重組,特別適合歷史表、日誌表等持續追加場景。

| 技術 | 適用條件 | 預期收益 | 注意事項 |
|---|---|---|---|
| Buffered Insert | DPF 環境 | 網路往返減少 80%+ | 需重綁套件,影響全例 IMPORT |
| COMPOUND=N | 所有環境 | 隨 N 線性提升 | N 過大可能增加記錄檔壓力 |
| APPEND MODE | 表已有資料、持續追加 | 插入速度提升 30~50% | 不支援 REORG 回收空間,需定期監控 |
三大技巧可疊加使用:先重綁啟用 Buffered Insert,匯入時加上 COMPOUND=100,目標表開啟 APPEND ON。實測在 TB 級資料匯入中,綜合效能可提升 3~5 倍,是 DB2 大量資料載入的必備優化組合拳。