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

DB2 解釋工具深度解析(一):存取計劃、解釋表與資料收集方式

     編輯:關於SqlServer

DB2 Optimizer 為每條 SQL 產生存取計劃,解釋工具可擷取並視覺化這些計劃,是 SQL 調優的核心武器。本文解析存取計劃生成時機、七大解釋表結構與四種資料收集方式。

存取計劃生成時機

  • 靜態 SQL: 預編譯階段(或延遲綁定時的 BIND 階段)生成,以 Package 形式存於系統目錄。
  • 動態 SQL: 執行時生成,可執行形式暫存於全域 Package Cache(記憶體),Cache 命中則重用不再調用 Optimizer。

為何需要解釋工具?

資料庫系統監視器與健康中心提供整體效能指標,但無法分析單一 SQL 的存取路徑選擇(是否使用索引、聯結順序、排序方式、預估成本)。解釋工具填補此空白,提供:

  • 优化器如何存取資料表與索引的詳細決策路徑
  • 效能調優行動前後的對比基準
  • Schema 變更、統計更新、參數標記對計劃的影響分析

七大解釋表結構

需先執行 EXPLAIN.DDL 腳本(位於 sqllib/misc/)建立:

表名內容
EXPLAIN_ARGUMENT各獨立運算子的特有特性
EXPLAIN_INSTANCESQL 來源基本資訊、解釋環境資訊(主控制表)
EXPLAIN_OBJECT存取計劃所需資料物件資訊
EXPLAIN_OPERATORSQL 編譯器所需所有運算子
EXPLAIN_PREDICATE特定運算子套用的述詞資訊
EXPLAIN_STATEMENT各層級解釋資訊對應的 SQL 文本(原始 + 重寫後版本)
EXPLAIN_STREAM運算子與資料物件間的輸入/輸出資料流

關聯: 所有表透過 EXPLAIN_INSTANCE 明確連結。

四種解釋資料收集方式

CURRENT EXPLAIN MODE 特殊暫存器CURRENT EXPLAIN SNAPSHOT 特殊暫存器PRECOMPILE/BIND 的 EXPLAIN/EXPLSNAP 選項
方式適用場景收集資料類型
EXPLAIN SQL 陳述式單一動態 SQL 即時分析完整解釋資料 / 解釋快照 / 兩者皆可
Session 級多條動態 SQL完整解釋資料
Session 級多條動態 SQL解釋快照
靜態 SQL(嵌入式應用)完整解釋資料 / 解釋快照

解釋資料類型對比

  • 完整解釋資料: 橫跨多張解釋表,含運算子、物件、述詞、資料流、實例、陳述式完整決策資訊。
  • 解釋快照: SQL 當前內部表現與所有相關資訊,存於 EXPLAIN_STATEMENT.SNAPSHOT 欄位,僅此類型支援 Visual Explain 圖形化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved