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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

還有一些謂詞不能看作階段1被文檔化,因?yàn)樗麄儾荒芸偺幱陔A段1。加入表序列和查詢重寫也能夠影響謂詞被過(guò)濾掉的階段。讓我們通過(guò)例子查詢來(lái)顯示重寫您的SQL的影響。

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

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

GETNEXTRESULTROW

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

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

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

解決方案

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

解決的技巧5:

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論