新聞中心
DB2性能優(yōu)化策略的選擇決定了數(shù)據(jù)庫優(yōu)化的效果,下面為您介紹了十個DB2性能優(yōu)化時(shí)的注意事項(xiàng),希望對你學(xué)習(xí)DB2性能優(yōu)化方面有所幫助。

1、提供適當(dāng)?shù)慕y(tǒng)計(jì)信息
對DB2優(yōu)化管理器(otimizer)而言,如何更加有效的執(zhí)行SQL語句是由存在于DB2 catalog中的統(tǒng)計(jì)信息決定的,優(yōu)化器利用這些信息決定***化的路徑。
因此,為了保持系統(tǒng)能夠做出***選擇,需要經(jīng)常的運(yùn)行Runstats命令,來保持系統(tǒng)統(tǒng)計(jì)信息的及時(shí)有效。在工作負(fù)荷很大的生產(chǎn)環(huán)境中,經(jīng)常運(yùn)行Runstats是很必要的,為了減少進(jìn)行統(tǒng)計(jì)對系統(tǒng)帶來的影響,可以使用Sampling技術(shù)。
2、在SQL語句中盡量使用Stage 1的謂詞
屬于Stage 1的SQL謂詞由Data Manager處理,而屬于Stage 2的SQL由Relational Data Server執(zhí)行。在處理效率上,Data Manager更有優(yōu)勢,因此,如果可能的話盡量把SQL語句寫成能夠在Stage 1執(zhí)行的。如果能夠結(jié)合Index來確定SQL語句中的謂詞,那么將會更加提高SQL執(zhí)行的效率。因此,在寫SQL查詢語句的時(shí)候,要結(jié)合Index的定義以及謂詞描寫的選擇,盡可能的讓SQL在Stage 1運(yùn)行。
3、在SQL中僅選擇需要的列
在SQL語句中,僅指定程序需要的列會有利于提高SQL運(yùn)行的性能。如果采用Select *這種模式,將會給客戶端的應(yīng)用程序帶來額外的處理工作,并需要更多的內(nèi)存等資源。對服務(wù)器端而言,多余的列在排序過程中會增大Sort工作文件,并因此導(dǎo)致排序速度的下降,并需要更多的存儲資源。在網(wǎng)絡(luò)傳輸過程中,也將傳輸一些不必要的數(shù)據(jù),降低網(wǎng)絡(luò)效率。
4、僅選擇需要的行
查詢的行越少,查詢的速度和響應(yīng)速度就越快。查詢獲得的每一行數(shù)據(jù),都經(jīng)歷了從存儲設(shè)備-〉緩沖池-〉排序和轉(zhuǎn)換-〉網(wǎng)絡(luò)傳輸-〉應(yīng)用程序等一系列過程。在數(shù)據(jù)的查詢過程中,數(shù)據(jù)庫管理器將會作很多數(shù)據(jù)的過濾工作,如果有許多并不需要的行從數(shù)據(jù)庫中檢索出來,將會浪費(fèi)很多不必要的處理時(shí)間,因此,在SQL語句的撰寫過程中應(yīng)該詳細(xì)的指定查詢條件,僅查詢需要的行。
5、如果數(shù)據(jù)庫中的數(shù)據(jù)很長時(shí)間不變,在SQL盡量使用常量或者字符。
在SQL中使用主機(jī)變量,是為了使系統(tǒng)適應(yīng)不斷變化的外部環(huán)境。在SQL程序中使用主機(jī)變量能夠使應(yīng)用程序不需要重新綁定就可以直接執(zhí)行新的SQL定義。但是這種靈活性是以降低DB2優(yōu)化管理器的性能為代價(jià)的。在包含主機(jī)變量的SQL語句中,DB2優(yōu)化管理器以默認(rèn)的估計(jì)值來進(jìn)行SQL路徑的選擇,而不是根據(jù)Catalog中的統(tǒng)計(jì)信息,這種選擇很多時(shí)候都不是***化的。因此,使用常量或者字符代替主機(jī)變量在長時(shí)間固定不變的環(huán)境中將會比使用主機(jī)變量更有優(yōu)勢。
6、使數(shù)字、日期等數(shù)據(jù)類型相匹配
在DB2 V7以前,數(shù)字類型的數(shù)據(jù)比較過程中,如果數(shù)字的長度不同,則DB2將會把這種數(shù)字的比較和匹配放到Stage 2來做,這樣就降低了處理的效率。自從DB2 V7開始,系統(tǒng)提供了Cast的方法,能夠手動的改變數(shù)字長度,在某些情況下能夠避免在Stage 2種進(jìn)行處理。
7、排序SQL語句的限制條件
DB2系統(tǒng)對SQL語句的處理過程是按照謂詞的類別進(jìn)行分類的,例如:Stage 1 and Indexable屬于***類,Stage 1 and On Index (index screening)屬于第二類,以此類推。而同一類別的情況下,系統(tǒng)在處理過程中按照其定義的物理順序進(jìn)行處理。因此,SQL語句在書寫過程中,應(yīng)該按照限制條件的關(guān)鍵性順序。這樣做的好處是:能夠讓系統(tǒng)首先根據(jù)限制條件最嚴(yán)格的謂詞定義來進(jìn)行數(shù)據(jù)掃描,能夠有效地減輕第二次甚至第三次的謂詞掃描過程的數(shù)據(jù)處理壓力,并提高總體的SQL語句檢索效率。
8、刪掉不必要的謂詞條件
每個SQL語句中的謂詞條件都會被系統(tǒng)處理,都會占用系統(tǒng)資源,因此如果某個條件是不必要的,請把它從SQL語句中刪除掉,以避免不必要的資源開銷。
9、限制返回的結(jié)果集
如果知道返回的結(jié)果集數(shù)量,使用FETCH FIRST n ROWS ONLY參數(shù)能夠限制返回確定數(shù)量的結(jié)果集,并且能夠快速的釋放一些相關(guān)資源,例如:緩沖池里面的page在結(jié)果集返回完成后能夠快速被釋放,一些lock以及Cusor資源也能夠被釋放。這樣可以節(jié)省系統(tǒng)資源,有利于提高系統(tǒng)資源的利用率。
10、分析和優(yōu)化訪問路徑(Access Paths)
通常系統(tǒng)自動生成的訪問路徑不一定是***的,為了進(jìn)一步優(yōu)化SQL執(zhí)行的性能,我們可以利用Explain等工具來獲取和解釋Explain的輸出信息,并且驗(yàn)證訪問路徑是否適合當(dāng)前的環(huán)境。特別是在生產(chǎn)環(huán)境中,每個SQL查詢語句的訪問路徑都應(yīng)該詳細(xì)檢查。優(yōu)化查詢主要包含以下一些技術(shù):OPTIMIZE FOR n ROWS
、FETCH FIRST n ROWS ONLY、Table expressions with DISTINCT、REOPT(VARS)、Index Optimization等。
文章名稱:DB2性能優(yōu)化的十大注意事項(xiàng)
URL鏈接:http://fisionsoft.com.cn/article/dpehede.html


咨詢
建站咨詢
