DB2 支援將 XML 文件與非結構化大型物件 (LOB) 與交易資料共同儲存,極大增強應用程式靈活度。但 XML 與 LOB 引入額外效能考量,設計與調校時必須納入下列關鍵因素。
LOB 在 DB2 或使用者位址空間中出現的方式,由設計與參考方法決定。使用 LOB 檔案參考變數 (File Reference Variable) 效能最佳,可避免 LOB 在 DBM1 位址空間與應用程式中實體化,同時繞過應用程式記憶體容量與配置限制。
LOB 體積龐大,日誌記錄會嚴重衝擊現用與封存日誌效能。DB2 9 允許記錄超過 1GB 的 LOB,但越大影響越大。建議:
NOT LOGGED 以避免大量日誌產生DB2 9 與 JDBC Universal Driver Type 4 (JCC T4) 引入 漸進式資料流,依 LOB 大小差異化處理:
| LOB 大小範圍 | 傳輸機制 | 優化重點 |
|---|---|---|
| 小型 (< 32KB) | 查詢區塊 (Query Block) 傳輸,視同長 VARCHAR | 極佳效能 |
| 中型 (32KB ~ 1MB) | 非 LOB 資料走查詢區塊,LOB 走外部溢位資料區塊 | 客戶端取得查詢資料,伺服器端處理 LOB |
| 大型 (> 1MB) | 查詢區塊回傳 LOB 定位器 (Locator) | 避免 LOB 在應用程式流程中實體化,效能最佳 |
可透過 MEDDTASZ DRDA 參數與 JCC T4 屬性 progressiveStreaming、streamBufferSize 微調。啟用 progressiveStreaming 會忽略 fullyMaterializeLobData 設定。
管理 LOB 無單一最佳通則,但妥善處理 LOB 資料類型能提升系統、資料庫與應用程式整體效能。