發(fā)布時間:2020-07-13
SQL優(yōu)化是一個復(fù)雜的工程,首先要講究從整體到局部。那么,關(guān)于數(shù)據(jù)庫整體優(yōu)化都有哪些性能測試工具?這些工具的特點?
有哪些SQL性能測試工具?
這里首先要分成兩部分:一種是不同調(diào)優(yōu)場景的分析,可分為單純場景的優(yōu)化和復(fù)雜場景的優(yōu)化;而另一種是基于這些場景的工具應(yīng)用,就是針對單純場景的優(yōu)化手段和復(fù)雜場景的優(yōu)化手段。
1、不同調(diào)優(yōu)場景分析
比如一條SQL很慢,原因是未走高效的索引查詢而走全表掃描,加個索引就快了,執(zhí)行速度從10s變成了0.1s;或者一條SQL執(zhí)行速度被優(yōu)化到1s左右,邏輯讀控制在50個左右,應(yīng)該就已經(jīng)OK。這就是單純的環(huán)境,我們差不多無須再考慮優(yōu)化了。
那啥是復(fù)雜呢?那就是,剛才那個語句加了索引后,本應(yīng)該從10s變成0.1s,結(jié)果還是10s,甚至變成30s了,這是咋回事呢?原來,現(xiàn)在系統(tǒng)是整體出問題了,數(shù)據(jù)庫主機資源耗盡,啥語句都跑不快的。
還有那個邏輯讀在50左右的SQL,如果一天執(zhí)行幾百幾千萬次,這要是能將邏輯讀降低一點,得省多少的邏輯讀啊。原來復(fù)雜環(huán)境真的很復(fù)雜,要考慮SQL本身沒問題而是被環(huán)境影響,還要考慮SQL的執(zhí)行頻率,判斷其調(diào)優(yōu)價值與調(diào)優(yōu)空間,這些在單純的環(huán)境里,是不用考慮的。
2、不同場景對應(yīng)工具
接下來,我們說說這兩種場景對應(yīng)的工具的使用。關(guān)于局部分析調(diào)優(yōu)工具,這個其實就是在說SQL的執(zhí)行計劃了,這是SQL優(yōu)化最重要的手段之一,通過分析執(zhí)行計劃,我們可以知道SQL語句的訪問路徑,知道它慢在哪里,從而進行SQL優(yōu)化。由于在隨后的章節(jié)中我們會詳細(xì)介紹執(zhí)行計劃相關(guān)知識,這里就不再細(xì)述了。
關(guān)于整體的調(diào)優(yōu)工具,這里我們先撇開主機、網(wǎng)絡(luò)、存儲等層面的因素,暫時從數(shù)據(jù)庫的整體層面入手。主要工具有AWR、ASH、ADDM、AWRDD這四個工具。其中AWR是關(guān)注數(shù)據(jù)庫的整體性能的報告;ASH是數(shù)據(jù)庫中的等待事件與哪些SQL具體對應(yīng)的報告;ADDM是Oracle給出的一些建議;而AWRDD是Oracle針對不同時段的性能的一個比對報告,比如今天早上9點系統(tǒng)很慢,而昨天這個時候很正常,很多人就想知道今天早上9點和昨天早上9點有什么不同,于是就有了這個報告。
整體分析調(diào)優(yōu)是必需的,那么我們對此的學(xué)習(xí)也有規(guī)律可循。首先是獲取系統(tǒng)整體信息的手段,一般通過報告和日志獲取。好比破案一樣,這就是收集證據(jù)的階段。接下來要找到蛛絲馬跡,那就是如何發(fā)現(xiàn)問題。
整體性能測試工具的要點:
其實數(shù)據(jù)庫性能工具的應(yīng)用(報告獲取和關(guān)注要點)有以下幾點:
1. 報告的獲取
Oracle性能報告分成AWR、ASH、ADDM、AWRDD和AWRSQRPT這5個類型。
Oracle提供的一種性能收集和分析工具,它能提供一個時間段內(nèi)整個系統(tǒng)資源使用情況的報告,這個報告里有很多總體性指標(biāo)來判斷系統(tǒng)是否健康。沒毛病最好,萬一有毛病,問題出在什么模塊,是日志切換過于頻繁,還是硬解析過大,還是某些SQL相關(guān)等待事件在耗資源……這就是AWR報告。這樣看來,體檢報告和AWR報告非常類似。
同樣假設(shè)你的數(shù)據(jù)庫是SQL相關(guān)等待事件問題,AWR報告很可能只告訴你有這個問題而無法告訴你是哪些SQL引發(fā)的。你要得到這些指標(biāo),想了解具體某些SQL和相關(guān)等待事件的對應(yīng)需要做進一步的信息收集,那就是ASH報告??磥韺Ρ任哥R和ASH報告,二者也非常類似。
如果將含各種晦澀的指標(biāo)的數(shù)據(jù)庫體檢報告用一些白底黑字的文字代替,用文字直接說明數(shù)據(jù)庫遇到了什么問題,告訴你該如何去優(yōu)化,那新手一定會看得很明白,這就是ADDM報告。
假設(shè)你有系統(tǒng)新舊兩個時段的兩份AWR報告,負(fù)責(zé)任的DBA一定會讓你將舊的AWR報告也提供給他。他會認(rèn)真地比對兩份報告,查看他關(guān)注的數(shù)據(jù)庫指標(biāo)是否有異常波動,這些波動對DBA很有參考意義,往往預(yù)示著數(shù)據(jù)庫性能瓶頸的發(fā)展趨勢。Oracle提供了一個工具能夠?qū)蓚€時段的AWR報告合并,并能方便地顯示出比對信息,這個工具就是AWRDD。
同樣ASH報告判斷出某些SQL有問題,卻無法得到執(zhí)行計劃等更詳細(xì)的信息,只能依靠AWRSQRPT去獲取這些信息??磥砘顧z和AWRSQRPT報告比起來,兩者也非常類似。
2. 報告的關(guān)注點
你也會對Oracle的性能報告中的各種指標(biāo)進行關(guān)注來判斷數(shù)據(jù)庫出了什么毛病。兩者非常類似,關(guān)注不同的指標(biāo)。
這里有一個特別值得注意的地方,那就是性能報告的采樣時間。Oracle默認(rèn)是每小時產(chǎn)生一個采樣點,你可以收集每個小時的性能報告。我們對此要敏感,比如你的性能故障是發(fā)生在今天早上7點~8點。然后系統(tǒng)自動恢復(fù)了,你獲取一張8點~9點的性能報告來查問題,就毫無意義了。
最后小編,為您介紹一下澤眾軟件推出的數(shù)據(jù)庫測試工具PR,支持自動生成性能分析報告,報告以圖表和表格數(shù)據(jù)兩種形式提供,圖表包括了性能曲線、柱狀圖等,清晰直觀,幫助快速了解測試結(jié)果,查找性能問題。
推薦閱讀:
性能測試和并發(fā)壓力的關(guān)系 性能測試中怎么設(shè)置并發(fā)數(shù)?
什么是WebSocket?有哪些支持WebSocket協(xié)議的壓力測試工具?
企業(yè)為什么需要做全鏈路壓測?全鏈路壓測能解決什么問題?
cs項目怎么做性能測試?cs性能測試跟bs有什么區(qū)別?
怎樣進行數(shù)據(jù)庫性能測試?數(shù)據(jù)庫壓力測試的幾個步驟
電話咨詢,400-035-7887,安排專業(yè)技術(shù)售前給您解答(產(chǎn)品試用、技術(shù)交流、服務(wù)咨詢和商務(wù)報價)。
您的信息已成功提交!
我們的客服人員稍后會與您聯(lián)系