DB2優(yōu)化性能之用解釋工具來對SQL 語句進行調(diào)優(yōu)
以下的文章主要向大家講述的是DB2優(yōu)化性能之使用解釋工具來對SQL 語句進行調(diào)優(yōu)的實際操作步驟,在實際操作中解釋工具一般都是用來顯示被查詢優(yōu)化器用來運行一個 SQL 語句的查詢訪問計劃。
它包含了用于運行 SQL 語句關(guān)于相關(guān)操作非常廣泛的信息,比如計劃操作去、它們的 arguments、執(zhí)行順序和成本。因為查詢訪問計劃是查詢性能中最重要的因素之一,為了能診斷查詢性能問題,能夠理解解釋工具的輸出非常重要。
解釋信息通常用于:
理解為什么應(yīng)用程序DB2優(yōu)化性能發(fā)生了變化
評估性能調(diào)優(yōu)的效果
分析性能變化
為了幫助你理解查詢性能變化的原因,需要調(diào)優(yōu)前后的解釋信息,你可以通過執(zhí)行下面步驟得到它們:
在你做任何更改之前,抓取查詢的解釋信息并保存解釋表。另外,也可以保存 db2exfmt 解釋工具的輸出。然而,為了更成熟的分析,把解釋信息保存在解釋表中可以更方便用 SQL 查詢,又提供了把數(shù)據(jù)保存在關(guān)系型 DBMS 中在維護上明顯的優(yōu)勢。此外 db2exfmt 工具可以在任何時間運行。
如果你不想、或不能訪問 Visual Explain 來查看這些信息,就保存或打印當前編目統(tǒng)計信息。你也可以使用 db2look 生產(chǎn)力工具來幫助執(zhí)行這個任務(wù)。另外,如果是你用 DB2 9.5,在語句被解釋的同時搜集解釋快照。 Db2exfmt 工具將自動格式化包含在快照中的信息。
這在使用自動或是統(tǒng)計信息收集的時候尤其重要,因為查詢優(yōu)化器使用的統(tǒng)計信息可能還沒有存入系統(tǒng)編目表中,或者他們可能在語句從系統(tǒng)編目表中獲取信息到被解釋的過程中被更改了。
保存或打印數(shù)據(jù)定義語言(DDL)語句,包括這那些 CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE TABLESPACE 。 Db2look 同樣可以執(zhí)行這個任務(wù)。
通過這個方法收集的信息,為將來的分析提供了一個參考點。對動態(tài) SQL 語句來說,當你***次運行你的應(yīng)用程序時,你可以搜集這個信息。對于靜態(tài)語句,也可以在綁定的時候搜集這個信息。在一個主要系統(tǒng)更改之前搜集這個信息非常重要,比如安裝一個新的服務(wù)級別或 DB2 版本或者一個很大的配置改動,比如增加或刪除數(shù)據(jù)庫分區(qū)和分布數(shù)據(jù)。
這是因為這類系統(tǒng)更改可能造成訪問計劃的不利更改。雖然訪問計劃退步應(yīng)該很少發(fā)生,但是有這些可用信息將允許更快的你解決DB2優(yōu)化性能退步的問題。要分析一個性能變化,把之前的信息和現(xiàn)在你開始分析的時候收集到的關(guān)于查詢和環(huán)境的信息進行比較。
一個簡單的例子,你的分析可能顯示索引不再作為訪問計劃的一部分被用到。使用 Visual Explain 或 db2exfmt 顯示的編目統(tǒng)計信息,你可能注意到 index 級別數(shù)遠遠高于查詢***次綁定到數(shù)據(jù)庫的時候的值。然后你可以選擇執(zhí)行下面的某個操作:
重組索引
為你的表和索引搜集新的統(tǒng)計信息
在重新綁定的時候搜集解釋信息。
在你執(zhí)行其中某個操作之后,再檢查一下查詢計劃。如果索引再一次被使用了,這個查詢的性能可能不再是個問題。重復(fù)這些步驟直到問題被解決。
評估性能調(diào)整效果
你可以進行一系列的操作來幫助提高查詢性能,比如校對配置參數(shù)、添加容器、和搜集刷新編目統(tǒng)計信息。
在你這些方面進行了更改,如果在被訪問計劃選擇到的方面有更改的話,你可以使用解釋工具來判斷影響。例如,如果你基于索引指南添加一個索引或物化查詢表(MQT),解釋數(shù)據(jù)可以幫助你判斷是否索引或物化查詢表最終如你所期望的被用到了。
雖然解釋輸出提供了讓你判斷選中的訪問計劃的信息和成本,對一個查詢來說精確測量DB2優(yōu)化性能提高的***方法是使用基準的是技術(shù)。
【編輯推薦】
- DB2性能調(diào)優(yōu)中易出現(xiàn)的問題有哪些?
- DB2 并行版本中的查詢優(yōu)化登峰造極!
- DB2數(shù)據(jù)庫進行備份在AIX如何操作?
- DB2 存儲過程的異常處理器類型有幾種?
- 對DB2數(shù)據(jù)移動方法的正確解析