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

提升 DB2 Web 程式效能的實用規則詳解

     編輯:DB2 教學

效能測量基準工具 (TimeDiff)

public class TimeDiff {
    private DateTime startTime, endTime;
    public void start() { startTime = DateTime.Now; }
    public void stop()  { endTime   = DateTime.Now; }
    public String getTimeDifferenceText() {
        return (endTime - startTime).ToString();
    }
}

測試表 LOTSOFRECORDS:10,000 列 × 10 欄 (CHAR(50)),主鍵 KEYCOL。

注意:DB2 內部緩衝池首次查詢後暖機,效能測試以暖機後結果為準。

規則一:按需檢索 (Retrieve Only What You Need)

反模式

SELECT * FROM GLENN.LOTSOFRECORDS

最佳模式

SELECT KEYCOL, COL1, COL2, COL7 FROM GLENN.LOTSOFRECORDS

實測結果 (暖機後)

  • 全欄查詢:1.622 秒
  • 四欄查詢:1.311 秒 (80% 耗時)

效益:網路流量 ↓、伺服器 CPU/記憶體 ↓、用戶等待 ↓。

延伸:WHERE 過濾列,進一步減少回傳量。

規則二:優化資料庫 (Optimize the Database)

索引威力展示

SELECT PRODUCTCODE, PRODUCTNAME, DESCRIPTION, UNITPRICE
FROM GLENN.PRODUCTLIST WHERE UNITPRICE > 20.00

無索引 → 全表掃描;建立 CREATE INDEX idx_price ON PRODUCTLIST(UNITPRICE) → 索引區間掃描,毫秒級回應。

持續優化管道

  • 追蹤 IBM DB2 Developer Domain、comp.databases.ibm-db2。
  • 善用 DB2 Index Advisor (db2advis):輸入查詢負載,自動輸出最佳索引建議清單。

規則三:連線池與 PreparedStatement (實務補充)

雖原文著重前兩規則,生產級 Web 應用必備:

  • HikariCP / DBCP 連線池:消除頻繁建立/銷毀連線開銷 (通常佔總時間 30-50%)。
  • PreparedStatement 參數化查詢:計劃快取重用 + 防 SQL 注入。
  • 大結果集採流式處理 (setFetchSize) 避免 OOM。

總結檢核表

規則關鍵動作量化收益
按需檢索SELECT 明確欄位 + WHERE 過濾列網路流量 ↓ 20%+、回應時間 ↓
優化資料庫針對 WHERE/JOIN/ORDER BY 建索引 + 定期 RUNSTATS + Index Advisor全表掃描 → 索引掃描、CPU ↓
連線池/PreparedStatement配置連線池 + 參數化查詢連線開銷 ↓ 90%+、計劃重用率 ↑
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved