db2cmd
db2 connect to <DB> user <用戶> using <密碼>
db2 -tf sql1.sql
LOGFILSIZdb2 update db cfg using LOGFILSIZ 51200
單位為 4KB 頁,預設較小。大量插入產生大量日誌,增大檔案可減少檔案切換頻率與歸檔壓力。
LOGBUFSZdb2 update db cfg using LOGBUFSZ 1024
單位為 4KB 頁。較大緩衝區可批次將日誌刷新至磁碟,減少 I/O 等待。
若 INSERT ... SELECT 形式,優先優化 SELECT 查詢。慢查詢是插入效能的隱形殺手。
db2 reorg table <schema>.<表名>
db2 runstats on table <schema>.<表名> with distribution and detailed indexes all
針對所有涉及插入的表執行,確保優化器擁有最新統計資訊,選擇最佳存取路徑。
查看現有緩衝池:
db2 "select bpname, pagesize, npages from syscat.bufferpools"
原則:所有緩衝池總頁數 × 頁大小 ≤ 實體記憶體 1GB(32位)或更高(64位)。調整範例:
db2 "alter bufferpool IBMDEFAULTBP size 51200"
以 4KB 頁計,51200 頁 ≈ 200MB。視記憶體狀況逐步調大,避免作業系統換頁。
LOAD 替代 INSERT 進行大量資料初始化,效能差距可達數十倍。DB2_PARALLEL_IO 登錄變數(多磁碟環境)提升 I/O 平行度。db2pd -tcbstats 觀察緩衝池命中率,目標 > 95%。