亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:5日期:2023-11-08 09:32:49
結(jié)構(gòu)化查詢語言(SQL)對于關(guān)系型DBMS是把雙刃劍,利弊參半。因為從關(guān)系型數(shù)據(jù)庫檢索任何數(shù)據(jù)都需要SQL,本文所要探討的話題就是:不論是終端用戶還是開發(fā)人員或是數(shù)據(jù)庫治理員(DBA),他們將如何訪問一個關(guān)系型數(shù)據(jù)庫。當使用高效的SQL時,系統(tǒng)會變得易于升級、靈活、而且便于治理。當使用低效的SQL時,響應(yīng)時間和程序運行時間都會延長,并且還會產(chǎn)生應(yīng)用系統(tǒng)的中斷。鑒于通常的數(shù)據(jù)庫系統(tǒng)一般要花費90%的處理時間用于從數(shù)據(jù)庫檢索數(shù)據(jù),由此很明顯的可以看出盡可能的保證SQL的高效是多么的重要。考察通常的SQL語句問題譬如"SELECT*FROM"僅是冰山一角,我們將在本文中探討其他輕易確定的普遍的問題。需要記住的是,檢索得到同一數(shù)據(jù)的SQL語句有很多種殊途同歸的寫法,所以不存在好的查詢語句或是壞的查詢語句,而只有滿足適當需求的查詢語句。各關(guān)系型數(shù)據(jù)庫都有自己的方式來優(yōu)化和執(zhí)行查詢語句。因此,各DBMS都擁有自己的最佳性能的查詢技巧。本文將使用Quest軟件中QuestCentralforDB2的例子和概述來集中討論DB2forOS/390和z/0S。要是在十七年前,這張技巧單會更長,并且會包含對最小化的SELECT場景的矯正方法。每一個新版本的DB2都會增加成千上萬行的新代碼,用以擴展智能優(yōu)化,和查詢重寫及執(zhí)行。例如,多年來一種被稱為數(shù)據(jù)治理器的組件,通常被提供作為"第一階段處理"以增加它的過濾容量一百倍。另一組件是關(guān)系型數(shù)據(jù)服務(wù)器,通常被提供作為"第二階段處理"來進行其主函數(shù)的查詢重寫和優(yōu)化。另一要害組件就是基于當前的SQL,并使用存取路徑以決定檢索數(shù)據(jù)的DB2優(yōu)化器。DB2優(yōu)化器改善了每一個DB2的版本,考慮到另外的DB2目錄中的統(tǒng)計,可以提供新的和改善過的存取路徑。圖1顯示了這些組件及其他更多的部分,并描述了DB2如何處理數(shù)據(jù)或SQL的請求。這就是以下DB2SQL性能技巧的來源。 1234567下一頁 深入優(yōu)化DB2 數(shù)據(jù)庫的五個最佳實踐(1)圖1:DB2Engine和一些組件介紹在這篇文章中,我們將回顧一些更具有代表性的SQL問題,有更多的SQL方面的性能技巧超出了本篇文章描述的范圍。像所有指導(dǎo)方針一樣,所有這些技巧也會有一些例外。技巧1:核實是否提供了適當?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)計:圖2:DB2優(yōu)化器驗證過的列和用來確定的存取路徑經(jīng)常的執(zhí)行"RUNSTATS"命令,用來更新DB2的目錄統(tǒng)計,這樣可以在非凡繁忙的生產(chǎn)環(huán)境里中得到全貌。為了使執(zhí)行"RUNSTATS"命令的影響最小化,可以考慮使用采樣技術(shù)。即使取樣10%也夠了。另外"RUNSTATS"命令可以更新統(tǒng)計,DB2給您可以額外更新1,000個條目的能力,以用于不均勻的分類統(tǒng)計。當心隨著每一條目隨著增量的增加,而涉及到對所有參考的綁定時間的影響。假如當您缺少統(tǒng)計的時候您怎么知道呢?當目錄或使用工具不能提供這種功能的時候,您可以通過手工執(zhí)行查詢。當前,DB2優(yōu)化器不能給缺失的統(tǒng)計提供具體的警告。技巧2:盡可能的采用階段1和階段2的謂詞:不論是階段1的數(shù)據(jù)治理器還是階段2的關(guān)系型數(shù)據(jù)服務(wù)器都將處理每一次查詢。當您處理查詢時,使用階段1將會比使用階段2有著巨大的性能優(yōu)勢。當謂詞確定階段1能夠處理的時候,通常謂詞會限制您只能使用階段1查詢。另外,每一個謂詞都會被檢驗評估是否比另一個謂詞更有資袼作為索引路徑。有一些謂詞不能作為階段1來處理,或是不符合索引的條件。關(guān)于您的查詢是否可以被索引并且能夠在階段1被處理,理解這一點是很重要的。下面是文擋化的階段1或Sargable(search+argument-able謂詞是一個可以由數(shù)據(jù)治理器來值的謂詞)謂詞: 上一頁1234567下一頁 圖3:通常用表單來確定謂詞是否合格還有一些謂詞不能看作階段1被文檔化,因為他們不能總處于階段1。加入表序列和查詢重寫也能夠影響謂詞被過濾掉的階段。讓我們通過例子查詢來顯示重寫您的SQL的影響。例子1:COL1和COL1之間的值:任何類型的謂詞如不能被階段1識別,就是階段2。如下所示就是階段2謂詞。然而,重寫可能促進對可索引階段1的查詢:Value>=COL1ANDvalue<=COL2。這意味著,優(yōu)化器也許會在多個索引中選擇一個匹配的索引來使用謂詞。沒有重寫,謂詞的剩余被當作階段2。例子2:COL3NOTIN(K,S,T):假如可能,非可索引的階段1的謂詞也應(yīng)該被重寫。例如,符合以上條件的是階段1,但不是可索引的。括號里值的列表辨認什么與COL3不相等。為了確定重寫的可行性,辨認出那些COL3不相等的、更長和更不穩(wěn)定的表單,就越不具有可行性。假如對面的(K,S,T)是少于200的靜態(tài)值,就值得輸入額外的重寫。促進階段1的條件對于可索引的階段1,提供了其它匹配索引選擇的優(yōu)化器。既使一個可支持的索引在綁定時間不可利用,重寫也將確保查詢具有索引訪問的資格,并且此索引將在以后被創(chuàng)建。一旦一個索引被創(chuàng)建并與COL3合并,重新綁定的事務(wù)也許可能獲得匹配的索引訪問,那里的舊謂詞將不會對重新綁定有影響。技巧3:僅選擇需要的列:每一個被選擇的列必須單獨地被傳回到調(diào)用程序,除非對整個的DCLGEN定義有精確匹配的。這也可能依靠于您向所有列發(fā)出的請求,但是,真正的損失發(fā)生在需要排序的時候。每一個被SELECTed的列,和重復(fù)的排序列,使得排序文件的寬度更寬。文件越長越寬,排序越慢。例如,100,000個四字節(jié)的列可能在大約一秒的時間內(nèi)完成排序。而只有10,000個五十字節(jié)的列可能在同樣時間內(nèi)完成排序。實際的時間是非常依靠于硬件的。 上一頁1234567下一頁 這個規(guī)則的例外是“DisallowSELECT*,當幾個處理需要一個表中行的不同的部分的時候。通過事務(wù)的整合,一次取回所有行,然后單獨處理這些部分。技巧4:選擇唯一需要的行:越少的行被檢索,查詢將運行的越快。符合要求的行不得不令自己在存儲器中通過漫長之旅,穿過緩沖池,階段1,階段2,可能的分類和轉(zhuǎn)換,然后傳遞結(jié)果集到調(diào)用程序。數(shù)據(jù)庫治理器治理所有的數(shù)據(jù)過濾;這對于檢索一行是非常浪費的,測試在程序代碼里的那一行,然后過濾掉那行。禁止程序自動過濾是一個必須強制執(zhí)行的鐵的規(guī)則。開發(fā)商可能選擇使用程序代碼執(zhí)行所有或部分的數(shù)據(jù)操作或者他們可能選擇使用SQL。典型地是混合在一起。已知的敘述顯示,過濾器可能被放入DB2engine里的程序代碼,類似:IFTABLE-COL4>:VALUEGETNEXTRESULTROW技巧5:使用常量和字面值,假如值在以后的3年中不改變(對于靜態(tài)查詢):DB2優(yōu)化器對所有不均勻的分類統(tǒng)計都充分的使用,并為任何一個列統(tǒng)計提供了不同領(lǐng)域范圍內(nèi)的值,尤其當沒有主機變量在謂詞中被發(fā)現(xiàn)時,(WHERECOL5>'X')。主機變量的目的是使一個事務(wù)能適應(yīng)一個可變化的變量;當一個用戶請求輸入這個值的時候是最經(jīng)常被使用的。主機變量不需要重新綁定一個程序,當這個變量每一次改變的時候。這種可延伸性能得到優(yōu)化器準確的耗費。當主機變量剛被發(fā)現(xiàn),(WHERECOL5>:hv5),優(yōu)化器使用以下的圖表來評估過濾器要素,而不是使用目錄統(tǒng)計:圖4:過濾器要素列的基數(shù)性越高,則謂詞的過濾器要素就越低(保留部分行的猜測)。多數(shù)時候,這種評估有助于優(yōu)化器對適當存取路徑的選取。然而,有時謂詞的過濾器要素遠離實際。這就是通常需要對存取路徑進行調(diào)優(yōu)的時候。 上一頁1234567下一頁 解決方案QuestCentralforDB2是一個集成的控制臺,可以提供核心功能,DBA(數(shù)據(jù)庫治理員)需要執(zhí)行他們?nèi)粘5臄?shù)據(jù)庫治理任務(wù),空間治理,SQL調(diào)優(yōu)和分析,并且可以進行性能診斷監(jiān)視。QuestCentralforDB2是由DB2軟件專家撰寫的,并且提供具豐富的功能,以利于視圖化的用戶界面,并且支持在Unix,Linux,和windows主機上運行DB2數(shù)據(jù)庫。DB2的客戶不再被要求用獨立的工具維護和使用他們的主機和分布式的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語句能夠被改進很多次。然后這些場景能夠馬上被比較以確定哪個SQL語句提供了最有效率的存取路徑。2.比較:您馬上可以看出對于SQL語句修改的性能改變效果。由于比較多個場景,您能看到對CPU的效果,消耗的時間,I/O和其他更多的統(tǒng)計。另外數(shù)據(jù)的比較將保證您的SQL語句返回相同的數(shù)據(jù)子集。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是由更豐富和更透徹的知識恰當?shù)慕M成的。QuestCentral不僅可以提高您的SQL語句效率,更可以幫助您全面的提升數(shù)據(jù)庫的性能。上面描述的各種調(diào)優(yōu)技巧都被QuestCentral所包括。 上一頁1234567下一頁 解決的技巧1:核實特定提供的統(tǒng)計:一旦一條SQL語句在QuestCentral中被描述,建議欄會提供一整套建議,包括當沒有RUNSTATS時也可以發(fā)現(xiàn)的能力。QuestCentral一直以堅定的決心來探究這類建議。每一條建議都有相對應(yīng)的"建議操作"。這種建議操作會指導(dǎo)如何矯正建議發(fā)現(xiàn)的問題。這將會打開一個新的場景由被重寫的SQL或以促進對象分析的腳本組成。在這個例子中,建議顯示,統(tǒng)計的缺失和相對應(yīng)的建議操作將建立一個腳本,它包含RUNSTATS命令,為了在建議操作的窗口中選擇任何一個對象。圖5:SQL調(diào)優(yōu)的組件鑒別所有對象缺失的統(tǒng)計,并且能夠生成必要的命令對所有選擇對象的統(tǒng)計進行更新。另外,QuestCentralSpace的治理能夠自動的收集、維護和檢驗在表空間里的統(tǒng)計及表和索引等級。以下的例子顯示了在數(shù)據(jù)庫里所有表空間里的統(tǒng)計檢驗報告。圖6:QuestCentral提供了一套輕易使用的圖形界面,以促進RUNSTATS處理的自動化。解決的技巧2:盡可能的提升階段2和階段1的謂詞:SQL的調(diào)優(yōu)組件將列出所有的謂詞并指出那些謂詞是否是"Sargable"或"Non-Sargable"。另外,各個謂詞都將被檢查,以確定它是否具有索引存取的資袼。這種單獨的建議可以解決響應(yīng)時間的問題和在謂詞重寫的期間內(nèi)得到某些成果。在下面的例子中,一條查詢被看作non-sargable和non-indexable(階段2)。這條最初的查詢被輸入在一個謂詞間。一個新場景被打開了并且謂詞被重寫使用大于,小于符號。這種比較確定了查詢重寫對性能方面的影響。 上一頁1234567下一頁 圖7:Querythatisnon-indexableandnon-sargable(stage2)一個新場景被創(chuàng)建并且查詢被重寫在列值中使用"a>="和"a<="。注重,謂詞現(xiàn)在是可索引的和sargable。記住以上的信息,謂詞現(xiàn)在將由數(shù)據(jù)治理器(階段1)處理,以減少這次查詢的潛在響應(yīng)時間。圖8:查詢是indexable和sargable(階段1)隨后可以使用比較工具來比較他們和"<>"之間的性能,會發(fā)現(xiàn)"<>"更有效的減少消耗的時間。圖9:耗時減半解決的技巧3:選擇唯一需要的列:SQL調(diào)優(yōu)的特點不僅是相對于使用"SELECT*"的建議,更提供一個事半功倍的可以令產(chǎn)品自動重寫SQL的特點。建議和相對應(yīng)的建議操作將提供重寫您SQL的能力,簡單地檢查想要的列并選擇"applyadvice"按鈕,SQL調(diào)優(yōu)將用被選擇的列替換"*"。圖10:"applyadvice"的特點是將重寫SQL,并重視選擇的建議操作。解決的技巧4:選擇唯一需要的行:越少的行被檢索,查詢將運行的越快。使用QuestCentral能比較您最初的SQL相對于選擇較少行但相同的SQL語句。使用多個場景和利用比較特點,比較那些馬上顯示發(fā)生變化的性能影響的場景。在以下例子中,兩張表單的加入,產(chǎn)生了一個有意義的結(jié)果集。由于加入了"FetchFirst1RowOnly'"執(zhí)行時間顯著的減少了。圖12:為了減少行數(shù)而修改一個SELECT語句,用來比較確認性能的受益。解決的技巧5:使用常量和字面值,假如值在以后的3年中不改變(對于靜態(tài)查詢):在這個例子中,讓我們進行一個基于Win2K平臺的DB2測試。當使用主機變量時,DB2優(yōu)化器無法猜測謂詞過濾的值。沒有這個值,DB2將默認并使用上面列出的默認的過濾器要素。QuestCentralSQL調(diào)優(yōu)將一直顯示過濾器要素用以幫助了解有多少列將被過濾。圖12:QuestCentral顯示每個謂詞的過濾器要素 上一頁1234567
主站蜘蛛池模板: 国产换爱交换乱理伦片的功能 | 欧美亚洲制服 | 婷婷情| 色噜噜国产在线91蝌蚪 | 99re热这里只有精品18 | 日本精品久久久一区二区三区 | 91妖精视频 | 亚洲欧美国产视频 | 亚洲一区二区视频在线观看 | 国产综合精品日本亚洲777 | 污污网站免费在线观看 | 亚洲高清视频一区 | 97久视频精品视频在线老司机 | 国产黄网在线 | 香蕉影视在线观看 | 国产欧美一区二区三区视频在线观看 | 亚洲综合久久久久久888 | 久久香蕉国产在产线看观看 | 911精品国产91久久久久 | 中文字幕在线色 | 欧洲美女粗暴交视频 | 特黄特a级特别特级特毛片 特黄特色一级aa毛片免费观看 | 黑人巨大两根一起挤进来 | 日日噜噜夜夜狠狠久久丁香七 | 日本一级特黄aa毛片免费观看 | 草草视频在线免费观看 | 欧美日韩一区二区三区久久 | 国产在线视频h | 欧美一级毛片免费观看软件 | 亚洲黄色免费在线观看 | 免费一级特黄特色大片∵黄 | 中文字幕日韩在线观看 | 国产丝袜第一页 | 最新色网址 | 欧美影视一区二区三区 | 亚洲国产人成在线观看 | 毛片 ftp| 国产黄色的视频 | 美女视频一区二区三区在线 | 久久久全国免费视频 | 午夜香蕉网 |