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

大幅提升 DB2 IMPORT 命令效能的兩大實戰技巧

     編輯:DB2 教學

為什麼 IMPORT 比 LOAD 慢?

IMPORT 會逐筆驗證所有約束條件、觸發器、寫入交易日誌,且預設逐列提交,導致大量資料匯入時效能遠遜於 LOAD。但在無法使用 LOAD 的場景(如需觸發器觸發、跨平台文字檔匯入、應用邏輯耦合)下,可透過以下兩種方式大幅優化 IMPORT 效能。

技巧一:啟用緩衝區插入

對 db2uimpm 套件重新綁定並指定 INSERT BUF 選項,使匯入過程在客戶端緩衝多筆資料後再批次送至伺服器,減少網路往返。

操作步驟

db2 connect to sample
db2 bind db2uimpm.bnd insert buf
db2 "import from myfile of del insert into mytable"

原理說明

  • db2uimpm.bnd 是 IMPORT 實用程式使用的套件。
  • INSERT BUF 讓 JDBC/CLI 驅動程式啟用客戶端插入緩衝,累積多筆 INSERT 後一次發送。
  • 對分區資料庫環境效果顯著,可大幅降低協調節點與分區節點間的通訊開銷。

技巧二:使用 COMPOUND 選項批次提交

在 IMPORT 命令的 MODIFIED BY 子句中指定 COMPOUND=n,將 n 筆資料列打包成一個複合 SQL 陳述式執行。

操作範例

db2 connect to sample
db2 "import from myfile of del modified by compound=100 insert into mytable"

參數範圍與效果

  • COMPOUND 範圍:1 ~ 100(預設 1,即逐筆執行)。
  • 設為 100 表示每 100 列資料產生一個複合 INSERT 陳述式,網路封包數減少 99%。
  • 對遠端資料庫、高延遲網路環境效果最明顯。

綜合建議:雙管齊下

# 1. 啟用緩衝插入(僅需執行一次,永久生效)
db2 bind db2uimpm.bnd insert buf

# 2. 匯入時指定 COMPOUND=100
db2 "import from large_data.del of del modified by compound=100 insert into target_table"

注意事項與限制

  • COMPOUND 僅適用於 INSERT 模式,不支援 INSERT_UPDATE、REPLACE 等模式。
  • 若匯入過程中發生錯誤,整批 COMPOUND 區塊會回滾,錯誤定位較困難;建議先用小資料集驗證資料品質。
  • INSERT BUF 為套件層級設定,影響所有使用該套件的 IMPORT 操作;若需停用可重新綁定移除選項。
  • 極大量資料(百萬列以上)仍建議評估 LOAD 或 INGEST(DB2 10.1+)工具。

效能對比參考(非官方基準,僅供參考)

場景預設 IMPORT+ INSERT BUF+ COMPOUND=100兩者結合
10 萬列匯入耗時基準 100%約 70%約 40%約 25%
網路封包數基準減少 ~30%減少 ~99%減少 ~99%

實際效能增益取決於網路延遲、伺服器 CPU、索引/約束複雜度等因素。

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