DB2 提供了把各種 XML 文檔和非結構化數據對象與事務數據存儲在一起的功能,應用程序開發人員已經開始利用這個功能。這種數據和大對象 (LOB) 的聯姻增強了新應用程序的靈活性和功能性。
當然,XML 和其他 LOB 要求考慮更多的性能因素。在設計和調整 LOB 應用程序時,要考慮以下因素。
LOB 引用。在使用 LOB 時最重要的因素是,在 DB2 或用戶地址空間中出現 LOB 時如何引用它。出現的方式由所選的 LOB 設計和引用方法決定。
使用 LOB 文件引用變量會提供最好的性能。這種方式會避免在 DBM1 地址空間和應用程序中出現 LOB,同時回避了應用程序中的內存容量或分配限制。
LOB 日志記錄。LOB 非常大;對它們進行日志記錄會給當前使用的日志和存檔日志帶來性能問題。 DB2 9 允許對超過 1GB 的 LOB 進行日志記錄; LOB 越大,潛在的性能影響就越大。只要情況允許,就應該把 LOB 表空間定義調整為 NOT LOGGED,以避免 LOB 更新日志記錄活動產生大量數據。另外,在裝載 LOB 數據類型時最好關閉日志記錄(如果使用的實用程序有這樣的參數的話)。
LOB 大小。因為許多新的 Java 和分布式應用程序都使用 LOB,DB2 9 和 JDBC Universal Driver Type 4 (JCC T4) 現在會優化 DRDA LOB 數據流。這種優化稱為漸進式數據流,它根據 LOB 的大小以及 JCC T4 和 DRDA 設置以不同方式處理 LOB 。對於比較小的 LOB,漸進式數據流的優化效果特別好;它用查詢塊傳輸小的 LOB(小於 32KB),就像對待長的 varchar 列一樣。
對於中等大小的 LOB(大於 32KB 但小於 1MB),DB2 9 用查詢塊傳輸非 LOB 數據,用外部溢出數據塊傳輸 LOB 。這種方式把所有查詢數據交給客戶機,把 LOB 數據交給服務器。
可以通過 MEDDTASZ DRDA 參數設置和 JCC T4 屬性調整處理小型和中等 LOB 的方式。新的 DB2 Universal JCC T4 Driver 有兩個重要的屬性設置。第一個參數是 progressiveStreaming,在啟用時它提供一個新的處理選項。另一個參數是 streamBufferSize,它調整 LOB 緩沖區處理。如果啟用 progressiveStreaming,就會忽略 JCC fullyMaterializeLobData 的設置。可以通過這兩個參數調整 LOB 出現的方式和處理 DRDA 應用程序工作流,從而提高 LOB 的總體性能。
對於大型 LOB,查詢塊與 LOB 定位符變量一起返回。對大型 LOB 使用定位符可以避免在應用程序工作流中出現 LOB,這會產生最好的性能。
沒有最佳的管理 LOB 的通用方法,但是適當地處理 LOB 數據類型可以提高系統、數據庫和應用程序的性能。