深入優(yōu)化DB2 數(shù)據(jù)庫的五個最佳實踐-1_第1頁
深入優(yōu)化DB2 數(shù)據(jù)庫的五個最佳實踐-1_第2頁
深入優(yōu)化DB2 數(shù)據(jù)庫的五個最佳實踐-1_第3頁
深入優(yōu)化DB2 數(shù)據(jù)庫的五個最佳實踐-1_第4頁
深入優(yōu)化DB2 數(shù)據(jù)庫的五個最佳實踐-1_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Word深入優(yōu)化DB2數(shù)據(jù)庫的五個最佳實踐

深入優(yōu)化DB2(數(shù)據(jù)庫)的五個最佳實踐

結(jié)構(gòu)化查詢語言(SQL)對于關(guān)系型DBMS是把雙刃劍,利弊參半。因為從關(guān)系型數(shù)據(jù)庫檢索任何數(shù)據(jù)都需要SQL,本文所要探討的話題就是:不論是終端用戶還是開發(fā)人員或是數(shù)據(jù)庫管理員(DBA),他們將如何訪問一個關(guān)系型數(shù)據(jù)庫。當(dāng)使用高效的SQL時,系統(tǒng)會變得易于升級、靈活、而且便于管理。當(dāng)使用低效的SQL時,響應(yīng)時間和程序運(yùn)行時間都會延長,并且還會產(chǎn)生應(yīng)用系統(tǒng)的中斷。鑒于通常的數(shù)據(jù)庫系統(tǒng)一般要花費(fèi)90%的處理時間用于從數(shù)據(jù)庫檢索數(shù)據(jù),由此很明顯的可以看出盡可能的保證SQL的高效是多么的重要??疾焱ǔ5腟QL語句問題譬如"SELECT*FROM"僅是冰山一角,我們將在本文中探討其他容易確定的普遍的問題。需要記住的是,檢索得到同一數(shù)據(jù)的SQL語句有很多種殊途同歸的寫法,所以不存在好的查詢語句或是壞的查詢語句,而只有滿足適當(dāng)需求的查詢語句。各關(guān)系型數(shù)據(jù)庫都有自己的方式來優(yōu)化和執(zhí)行查詢語句。因此,各DBMS都擁有自己的最佳性能的查詢技巧。本文將使用Quest(軟件)中QuestCentralforDB2的例子和概述來集中討論DB2forOS/390和z/0S。

要是在十七年前,這張技巧單會更長,并且會包含對最小化的SELECT場景的矯正方法。每一個新版本的DB2都會增加成千上萬行的新代碼,用以擴(kuò)展智能優(yōu)化,和查詢重寫及執(zhí)行。例如,多年來一種被稱為數(shù)據(jù)管理器的組件,通常被提供作為"第一階段處理"以增加它的過濾容量一百倍。另一組件是關(guān)系型數(shù)據(jù)服務(wù)器,通常被提供作為"第二階段處理"來進(jìn)行其主函數(shù)的查詢重寫和優(yōu)化。另一關(guān)鍵組件就是基于當(dāng)前的SQL,并使用存取路徑以決定檢索數(shù)據(jù)的DB2優(yōu)化器。DB2優(yōu)化器改善了每一個DB2的版本,考慮到另外的DB2目錄中的統(tǒng)計,可以提供新的和改善過的存取路徑。圖1顯示了這些組件及其他更多的部分,并描述了DB2如何處理數(shù)據(jù)或SQL的請求。這就是以下DB2SQL性能技巧的來源。

在這篇文章中,我們將回顧一些更具有代表性的SQL問題,有更多的SQL方面的性能技巧超出了本篇文章描述的范圍。像所有指導(dǎo)方針一樣,所有這些技巧也會有一些例外。

技巧1:核實是否提供了適當(dāng)?shù)慕y(tǒng)計:

對于DB2優(yōu)化器來說,最重要的資源除了SELECT語句本身,就是DB2目錄中創(chuàng)建的統(tǒng)計。優(yōu)化器基于眾多的選擇而使用這些統(tǒng)計。DB2優(yōu)化器為了查詢而選擇一條非最佳存取路徑的主要原因,歸結(jié)于無效的或缺失的統(tǒng)計。DB2優(yōu)化器使用以下目錄統(tǒng)計:

經(jīng)常的執(zhí)行"RUNSTATS"命令,用來更新DB2的目錄統(tǒng)計,這樣可以在特別繁忙的生產(chǎn)環(huán)境里中得到全貌。為了使執(zhí)行"RUNSTATS"命令的影響最小化,可以考慮使用采樣技術(shù)。即使取樣10%也夠了。另外"RUNSTATS"命令可以更新統(tǒng)計,DB2給您可以額外更新1,000個條目的能力,以用于不均勻的分類統(tǒng)計。當(dāng)心隨著每一條目隨著增量的增加,而涉及到對所有參考的綁定時間的影響。

假如當(dāng)您缺少統(tǒng)計的時候您怎么知道呢?當(dāng)目錄或使用(工具)不能提供這種功能的時候,您可以通過手工執(zhí)行查詢。當(dāng)前,DB2優(yōu)化器不能給缺失的統(tǒng)計提供具體的警告。

技巧2:盡可能的采用階段1和階段2的謂詞:

不論是階段1的數(shù)據(jù)管理器還是階段2的關(guān)系型數(shù)據(jù)服務(wù)器都將處理每一次查詢。當(dāng)您處理查詢時,使用階段1將會比使用階段2有著巨大的性能優(yōu)勢。當(dāng)謂詞確定階段1能夠處理的時候,通常謂詞會限制您只能使用階段1查詢。另外,每一個謂詞都會被(檢驗)評估是否比另一個謂詞更有資袼作為索引路徑。有一些謂詞不能作為階段1來處理,或是不符合索引的條件。關(guān)于您的查詢是否可以被索引并且能夠在階段1被處理,理解這一點是很重要的。下面是文擋化的階段1或Sargable(search+argument-able謂詞是一個可以由數(shù)據(jù)管理器來值的謂詞)謂詞:

還有一些謂詞不能看作階段1被文檔化,因為他們不能總處于階段1。加入表序列和查詢重寫也能夠影響謂詞被過濾掉的階段。讓我們通過例子查詢來顯示重寫您的SQL的影響。

例子1:COL1和COL1之間的值:

任何類型的謂詞如不能被階段1識別,就是階段2。如下所示就是階段2謂詞。然而,重寫可能促進(jìn)對可索引階段1的查詢:Value>=COL1ANDvalue:VALUE

GETNEXTRESULTROW

技巧5:使用常量和字面值,如果值在以后的3年中不改變(對于靜態(tài)查詢):

DB2優(yōu)化器對所有不均勻的分類統(tǒng)計都充分的使用,并為任何一個列統(tǒng)計提供了不同領(lǐng)域范圍內(nèi)的值,尤其當(dāng)沒有主機(jī)變量在謂詞中被發(fā)現(xiàn)時,(WHERECOL5>'X')。主機(jī)變量的目的是使一個事務(wù)能適應(yīng)一個可變化的變量;當(dāng)一個用戶請求輸入這個值的時候是最經(jīng)常被使用的。主機(jī)變量不需要重新綁定一個程序,當(dāng)這個變量每一次改變的時候。這種可延伸性能得到優(yōu)化器準(zhǔn)確的耗費(fèi)。當(dāng)主機(jī)變量剛被發(fā)現(xiàn),(WHERECOL5>:hv5),優(yōu)化器使用以下的圖表來評估過濾器要素,而不是使用目錄統(tǒng)計。

列的基數(shù)性越高,則謂詞的過濾器要素就越低(保留部分行的預(yù)測)。多數(shù)時候,這種評估有助于優(yōu)化器對適當(dāng)存取路徑的選取。然而,有時謂詞的過濾器要素遠(yuǎn)離實際。這就是通常需要對存取路徑進(jìn)行調(diào)優(yōu)的時候。

解決方案

QuestCentralforDB2是一個集成的控制臺,可以提供核心功能,DBA(數(shù)據(jù)庫管理員)需要執(zhí)行他們?nèi)粘5臄?shù)據(jù)庫管理任務(wù),空間管理,SQL調(diào)優(yōu)和分析,并且可以進(jìn)行性能診斷監(jiān)視。QuestCentralforDB2是由DB2軟件專家撰寫的,并且提供具豐富的功能,以利于視圖化的用戶界面,并且支持在Unix,(Linux),和windows主機(jī)上運(yùn)行DB2數(shù)據(jù)庫。DB2的客戶不再被要求用獨立的工具維護(hù)和使用他們的主機(jī)和分布式的DB2系統(tǒng)。

QuestCentral的SQL調(diào)優(yōu)組件提供一個完整的SQL調(diào)優(yōu)環(huán)境。QuestCentral是唯一可以提供完整的SQL調(diào)優(yōu)環(huán)境的針對DB2可用的產(chǎn)品。這個環(huán)境包括以下部分:

1.調(diào)優(yōu)實驗室:通過場景的使用,一個單獨的SQL語句能夠被改進(jìn)很多次。然后這些場景能夠立刻被比較以確定哪個SQL語句提供了最有效率的存取路徑。

3.建議:由SQL調(diào)優(yōu)組件提供的建議,將會發(fā)現(xiàn)所有的在白皮書指定的條件等等。另外,如果一個新場景可以利用,SQL調(diào)優(yōu)組件甚至將會重寫SQL,并綜合選擇的建議。

4.存取路徑和對應(yīng)的統(tǒng)計:在SQL的上下文中,對于DB2存取路徑,所有適合的統(tǒng)計應(yīng)被顯示出來。采取推測以設(shè)法理解為什么選擇一個特殊的存取計劃。

QuestCentralforDB2健壯的功能顯現(xiàn)了上述SQL調(diào)優(yōu)中的技巧以及更多。這篇白皮書剩余的部分將證明QuestCentral是由更豐富和更透徹的知識恰當(dāng)?shù)慕M成的。QuestCentral不僅可以提高您的SQL語句效率,更可以幫助您全面的提升數(shù)據(jù)庫的性能。上面描述的各種調(diào)優(yōu)技巧都被QuestCentral所包括。

解決的技巧1:核實特定提供的統(tǒng)計:

一旦一條SQL語句在QuestCentral中被描述,建議欄會提供一整套建議,包括當(dāng)沒有RUNSTATS時也可以發(fā)現(xiàn)的能力。QuestCentral一直以堅定的決心來探究這類建議。每一條建議都有相對應(yīng)的"建議操作"。這種建議操作會指導(dǎo)如何矯正建議發(fā)現(xiàn)的問題。這將會打開一個新的場景由被重寫的SQL或以促進(jìn)對象分析的腳本組成。在這個例子中,建議顯示,統(tǒng)計的缺失和相對應(yīng)的建議操作將建立一個腳本,它包含RUNSTATS命令,為了在建議操作的窗口中選擇任何一個對象。

并且能夠生成必要的命令對所有選擇對象的統(tǒng)計進(jìn)行更新。

另外,QuestCentralSpace的管理能夠自動的收集、維護(hù)和檢驗在表空間里的統(tǒng)計及表和索引等級。以下的例子顯示了在數(shù)據(jù)庫里所有表空間里的統(tǒng)計檢驗報告。

解決的技巧2:盡可能的提升階段2和階段1的謂詞:

SQL的調(diào)優(yōu)組件將列出所有的謂詞并指出那些謂詞是否是"Sargable"或"Non-Sargable"。另外,各個謂詞都將被檢查,以確定它是否具有索引存取的資袼。這種單獨的建議可以解決響應(yīng)時間的問題和在謂詞重寫的期間內(nèi)得到某些成果。在下面的例子中,一條查詢被看作non-sargable和non-indexable(階段2)。這條最初的查詢被輸入在一個謂詞間。一個新場景被打開了并且謂詞被重寫使用大于,小于符號。這種比較確定了查詢重寫對性能方面的影響。

一個新場景被創(chuàng)建并且查詢被重寫在列值中使用"a>="和"a"之間的性能,會發(fā)現(xiàn)""更有效的減少消耗的時間。

解決的技巧3:選擇唯一需要的列:

SQL調(diào)優(yōu)的特點不僅是相對于使用"SELECT*"的建議,更提供一個事半功倍的可以令產(chǎn)品自動重寫SQL的特點。建議和相對應(yīng)的建議操作將提供重寫您SQL的能力,簡單地檢查想要的列并選擇"(app)ly(ad)vice"按鈕,SQL調(diào)優(yōu)將用被選擇的列替換"*"。

解決的技巧4:選擇唯一需要的行:

越少的行被檢索,查詢將運(yùn)行的越快。使用QuestCentral能比較您最初的SQL相對于選擇較少行但相同的SQL語句。使用多個場景和利用比較特點,比較那些立刻顯示發(fā)生變化的性能影響的場景。在以下例子中,兩張表單的加入,產(chǎn)生了一個有意義的結(jié)果集。由于加入了"FetchFirst1RowOnly'"執(zhí)行時間顯著的減少了。

解決的技巧5:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論