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