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

DB2 資料庫優化六大基礎策略速查版

     編輯:DB2 教學

本文濃縮 DB2 優化六大核心策略,適合快速參考與團隊分享。

1. 索引建立時機 + RUNSTATS

  • 插入前建索引:同步維護,需大日誌空間,可用 NOT LOGGED INITIALLY 載入。
  • 插入後建索引:必須 執行 RUNSTATS ON TABLE ... AND INDEXES ALL,否則優化器不採用索引。

2. 大表置於多節點表空間 + 分區鍵

單節點表空間 (DIM) 僅 2 CPU/4GB。多節點 (32 節點) 並行掃描 → 協調節點匯總,效能提升數量級。配合索引更佳。

3. 大量載入用 NOT LOGGED INITIALLY

ALTER TABLE t ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE;
-- 大量 INSERT/LOAD
COMMIT;  -- 失敗時表需重建,僅限可重建資料

避免日誌爭用,極大提升載入速度。

4. 表級鎖減少鎖記憶體

LOCK TABLE t IN EXCLUSIVE MODE;

鎖數量有上限且佔記憶體,大批次操作時降低鎖升級開銷。評估並發影響後使用。

5. 臨時表只載必要欄位/資料

許多 ETL 全表塞入臨時表導致膨脹。原則:

  1. SELECT 僅必要欄位
  2. WHERE 過濾必要列
  3. 臨時表建適當索引

6. LEFT JOIN 寫法優化

ON 子句僅放:

  • 關聯鍵條件
  • 右表 (被外連接表) 過濾條件

主表過濾條件放 WHERE。錯誤寫法導致計劃退化或結果錯誤。

一頁式速查表

#策略關鍵指令/語法風險提醒
1索引+統計CREATE INDEX → RUNSTATS ... INDEXES ALL插入前建索引需大日誌
2多節點分區CREATE TABLESPACE ... ON NODES (...) + 分區鍵分區鍵需均勻分布
3不計日誌載入ACTIVATE NOT LOGGED INITIALLY失敗不可回滾
4表級鎖LOCK TABLE ... EXCLUSIVE並發度下降
5精簡臨時表SELECT 必要欄位 + WHERE 過濾需分析下游相依
6LEFT JOIN優化ON 僅關聯鍵+右表過濾主表過濾放 WHERE
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved