程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2優化性能之用解釋工具來對SQL 語句進行調優

DB2優化性能之用解釋工具來對SQL 語句進行調優

編輯:DB2教程

以下的文章主要向大家講述的是DB2優化性能之使用解釋工具來對SQL 語句進行調優的實際操作步驟,在實際操作中解釋工具一般都是用來顯示被查詢優化器用來運行一個 SQL 語句的查詢訪問計劃。

它包含了用於運行 SQL 語句關於相關操作非常廣泛的信息,比如計劃操作去、它們的 arguments、執行順序和成本。因為查詢訪問計劃是查詢性能中最重要的因素之一,為了能診斷查詢性能問題,能夠理解解釋工具的輸出非常重要。

解釋信息通常用於:

理解為什麼應用程序DB2優化性能發生了變化

評估性能調優的效果

分析性能變化

為了幫助你理解查詢性能變化的原因,需要調優前後的解釋信息,你可以通過執行下面步驟得到它們:

在你做任何更改之前,抓取查詢的解釋信息並保存解釋表。另外,也可以保存 db2exfmt 解釋工具的輸出。然而,為了更成熟的分析,把解釋信息保存在解釋表中可以更方便用 SQL 查詢,又提供了把數據保存在關系型 DBMS 中在維護上明顯的優勢。此外 db2exfmt 工具可以在任何時間運行。

如果你不想、或不能訪問 Visual Explain 來查看這些信息,就保存或打印當前編目統計信息。你也可以使用 db2look 生產力工具來幫助執行這個任務。另外,如果是你用 DB2 9.5,在語句被解釋的同時搜集解釋快照。 Db2exfmt 工具將自動格式化包含在快照中的信息。

這在使用自動或是統計信息收集的時候尤其重要,因為查詢優化器使用的統計信息可能還沒有存入系統編目表中,或者他們可能在語句從系統編目表中獲取信息到被解釋的過程中被更改了。

保存或打印數據定義語言(DDL)語句,包括這那些 CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE TABLESPACE 。 Db2look 同樣可以執行這個任務。

通過這個方法收集的信息,為將來的分析提供了一個參考點。對動態 SQL 語句來說,當你第一次運行你的應用程序時,你可以搜集這個信息。對於靜態語句,也可以在綁定的時候搜集這個信息。在一個主要系統更改之前搜集這個信息非常重要,比如安裝一個新的服務級別或 DB2 版本或者一個很大的配置改動,比如增加或刪除數據庫分區和分布數據。

這是因為這類系統更改可能造成訪問計劃的不利更改。雖然訪問計劃退步應該很少發生,但是有這些可用信息將允許更快的你解決DB2優化性能退步的問題。要分析一個性能變化,把之前的信息和現在你開始分析的時候收集到的關於查詢和環境的信息進行比較。

一個簡單的例子,你的分析可能顯示索引不再作為訪問計劃的一部分被用到。使用 Visual Explain 或 db2exfmt 顯示的編目統計信息,你可能注意到 index 級別數遠遠高於查詢第一次綁定到數據庫的時候的值。然後你可以選擇執行下面的某個操作:

重組索引

為你的表和索引搜集新的統計信息

在重新綁定的時候搜集解釋信息。

在你執行其中某個操作之後,再檢查一下查詢計劃。如果索引再一次被使用了,這個查詢的性能可能不再是個問題。重復這些步驟直到問題被解決。

評估性能調整效果

你可以進行一系列的操作來幫助提高查詢性能,比如校對配置參數、添加容器、和搜集刷新編目統計信息。

在你這些方面進行了更改,如果在被訪問計劃選擇到的方面有更改的話,你可以使用解釋工具來判斷影響。例如,如果你基於索引指南添加一個索引或物化查詢表(MQT),解釋數據可以幫助你判斷是否索引或物化查詢表最終如你所期望的被用到了。

雖然解釋輸出提供了讓你判斷選中的訪問計劃的信息和成本,對一個查詢來說精確測量DB2優化性能提高的唯一方法是使用基准的是技術。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved