DB2 Optimizer 為每條 SQL 產生存取計劃,解釋工具可擷取並視覺化這些計劃,是 SQL 調優的核心武器。本文解析存取計劃生成時機、七大解釋表結構與四種資料收集方式。
資料庫系統監視器與健康中心提供整體效能指標,但無法分析單一 SQL 的存取路徑選擇(是否使用索引、聯結順序、排序方式、預估成本)。解釋工具填補此空白,提供:
需先執行 EXPLAIN.DDL 腳本(位於 sqllib/misc/)建立:
| 表名 | 內容 |
|---|---|
EXPLAIN_ARGUMENT | 各獨立運算子的特有特性 |
EXPLAIN_INSTANCE | SQL 來源基本資訊、解釋環境資訊(主控制表) |
EXPLAIN_OBJECT | 存取計劃所需資料物件資訊 |
EXPLAIN_OPERATOR | SQL 編譯器所需所有運算子 |
EXPLAIN_PREDICATE | 特定運算子套用的述詞資訊 |
EXPLAIN_STATEMENT | 各層級解釋資訊對應的 SQL 文本(原始 + 重寫後版本) |
EXPLAIN_STREAM | 運算子與資料物件間的輸入/輸出資料流 |
關聯: 所有表透過 EXPLAIN_INSTANCE 明確連結。
| 方式 | 適用場景 | 收集資料類型 |
|---|---|---|
EXPLAIN SQL 陳述式 | 單一動態 SQL 即時分析 | 完整解釋資料 / 解釋快照 / 兩者皆可 |
| Session 級多條動態 SQL | 完整解釋資料 | |
| Session 級多條動態 SQL | 解釋快照 | |
| 靜態 SQL(嵌入式應用) | 完整解釋資料 / 解釋快照 |
EXPLAIN_STATEMENT.SNAPSHOT 欄位,僅此類型支援 Visual Explain 圖形化。