本文補充說明 CURRENT EXPLAIN MODE、BIND 選項等替代追蹤方式,以及生產環境追蹤的最佳實務建議。
-- 僅收集完整解釋資料,不執行 SQL
SET CURRENT EXPLAIN MODE = EXPLAIN;
-- 收集解釋快照,並執行 SQL
SET CURRENT EXPLAIN MODE = YES;
-- 同時收集完整解釋與快照
SET CURRENT EXPLAIN SNAPSHOT = EXPLAIN;
適用於動態 SQL 密集的應用,無需知道 SID/SERIAL#,在應用程式連線建立後立即執行上述指令即可。
-- 預編譯階段
PRECOMPILE ... EXPLAIN YES EXPLSNAP YES
-- 或延遲綁定階段
BIND ... EXPLAIN YES EXPLSNAP YES
選項值:NO(停用)、YES(收集並執行)、ALL(收集靜態+動態)、REOPT(執行時重新優化時收集)。
| 工具 | 介面 | 靜態 SQL | 動態 SQL | CLI 支援 | 詳細優化資訊 | 批次分析 |
|---|---|---|---|---|---|---|
db2expln | 文字 | 是 | 是 | 否 | 否 | 是 |
db2exfmt | 文字 | 是 | 是 | 是 | 是 | 是 |
| Visual Explain | 圖形 | 是 | 是 | 是 | 是 | 否 |
db2expln:直接讀取系統目錄中的 Package,快速查看已綁定靜態 SQL 的存取路徑,不需預先收集解釋資料。db2exfmt:處理解釋表中的完整資料,產生詳細文字報表,適合深度分析多條 SQL。ALTER SYSTEM SET SQL_TRACE=TRUE 影響整體效能。max_dump_file_size 防止追蹤檔佔滿磁碟;追蹤完成立即關閉。DBMS_SYSTEM 執行權限與 tkprof 執行權限。