國(guó)產(chǎn)數(shù)據(jù)庫(kù)問(wèn)題與性能診斷中的宏觀分析與微觀分析
熟悉Oracle數(shù)據(jù)庫(kù)的DBA肯定用過(guò)AWR報(bào)告和ASH報(bào)告。AWR報(bào)告是很多DBA分析Oracle數(shù)據(jù)庫(kù)性能問(wèn)題的利器。而對(duì)于ASH報(bào)告的使用則稍微陌生一點(diǎn)。事實(shí)上ASH報(bào)告包含的技術(shù)細(xì)節(jié)也是不夠的,ASH的明細(xì)數(shù)據(jù)更有分析價(jià)值。
圖片
Oracle的AWR的 LOAD PROFILE 可以十分明確地反映出數(shù)據(jù)庫(kù)的負(fù)載情況,目前絕大多數(shù)國(guó)產(chǎn)數(shù)據(jù)庫(kù)都提供類似Oracle AWR這樣的負(fù)載報(bào)告,數(shù)據(jù)庫(kù)負(fù)載情況是分析數(shù)據(jù)庫(kù)性能問(wèn)題的關(guān)鍵。很多問(wèn)題從歷史負(fù)載的比對(duì)就可以得到結(jié)論。命中率指標(biāo)也是反映出數(shù)據(jù)庫(kù)性能的十分明確的指標(biāo),一些因?yàn)閿?shù)據(jù)庫(kù)配置有問(wèn)題導(dǎo)致的性能問(wèn)題,很可能會(huì)反映在命中率上。幸運(yùn)的是,國(guó)產(chǎn)數(shù)據(jù)庫(kù)的AWR報(bào)告里這方面的數(shù)據(jù)也比較完善。
圖片
等待事件是分析Oracle問(wèn)題的最有價(jià)值的數(shù)據(jù),如果發(fā)現(xiàn)明顯某種等待事件影響了性能,那么在MOS上豐富的資料庫(kù)中搜索一番,可能就能找到答案了。不幸的是,國(guó)產(chǎn)數(shù)據(jù)庫(kù)缺少M(fèi)OS這樣的知識(shí)庫(kù),因此分析等待事件的能力偏弱一些,不過(guò)有經(jīng)驗(yàn)的DBA還是可以從中分析出一些問(wèn)題。比如上面的等待事件中,WAL寫(xiě)入鎖占了大部分等待時(shí)間,優(yōu)化WAL子系統(tǒng)性能應(yīng)該能夠改善性能。
圖片
上圖是電科金倉(cāng)數(shù)據(jù)庫(kù)的時(shí)間模型。時(shí)間模型是分析數(shù)據(jù)庫(kù)總體性能問(wèn)題中十分有價(jià)值的數(shù)據(jù),不過(guò)這些數(shù)據(jù)的解讀因?yàn)樾枰容^專業(yè)的數(shù)據(jù)庫(kù)知識(shí)而往往被忽視了。通過(guò)時(shí)間模型,我們可以看出數(shù)據(jù)庫(kù)在哪些地方消耗了更多的時(shí)間,一般與做總體優(yōu)化。如果某數(shù)據(jù)庫(kù)的時(shí)間模型數(shù)據(jù)是準(zhǔn)確的,那么可以做很多有價(jià)值的分析,定期采集數(shù)據(jù)庫(kù)的時(shí)間模型,并保存起來(lái),當(dāng)某些故障發(fā)生時(shí)進(jìn)行標(biāo)注,積累多了,就可以構(gòu)建分析與預(yù)測(cè)模型了。
“AWR”報(bào)告比較適合于宏觀分析,那么ASH數(shù)據(jù)在微觀分析方面很有價(jià)值。比如我們從“AWR”報(bào)告中看出行鎖等待是引發(fā)性能問(wèn)題的關(guān)鍵。那么我們就需要去定位為什么行鎖等待會(huì)那么嚴(yán)重。這時(shí)候AWR報(bào)告不一定能發(fā)揮作用了。有可能行鎖等待只持續(xù)了幾分鐘,而AWR報(bào)告是1小時(shí)采樣的,無(wú)法通過(guò)細(xì)微的分析最終定位問(wèn)題的根因。另外鎖等待或阻塞類的問(wèn)題,在ASH數(shù)據(jù)里是能夠明確查到阻塞者的。找出阻塞者,分析阻塞者在做什么,在等待什么,往往是定位問(wèn)題根因的關(guān)鍵。
ASH數(shù)據(jù)還可以用來(lái)分析某些SQL語(yǔ)句并發(fā)執(zhí)行的情況,會(huì)話的變化情況(會(huì)話數(shù)量、會(huì)話分布情況、活躍會(huì)話數(shù)量、異常會(huì)話數(shù)量、阻塞會(huì)話數(shù)量等的變化),結(jié)合服務(wù)器資源變化的趨勢(shì),可以獲得十分有價(jià)值的分析結(jié)果。一般的分析方法如下:
圖片
今天因?yàn)闀r(shí)間關(guān)系,我就不展開(kāi)這張圖的解釋了,明天我會(huì)寫(xiě)一個(gè)最近遇到的這方面的案例,到時(shí)候再來(lái)分析這種圖吧。ASH數(shù)據(jù)要能夠定位根因就必須是十分豐富的。數(shù)據(jù)甚至比會(huì)話視圖里的數(shù)據(jù)還要豐富。Oracle的ASH數(shù)據(jù)就是如此的,在數(shù)據(jù)中還包含了會(huì)話兩次被采樣之間的各種統(tǒng)計(jì)數(shù)據(jù)的變化,比如物理讀的次數(shù)、總量等。這些數(shù)據(jù)對(duì)于定位根因十分關(guān)鍵。
圖片
幸運(yùn)的是越來(lái)越多的國(guó)產(chǎn)數(shù)據(jù)庫(kù)目前已經(jīng)開(kāi)始支持活躍會(huì)話數(shù)據(jù)的采樣與保存,讓我們獲得了這個(gè)分析微觀問(wèn)題的關(guān)鍵數(shù)據(jù)。AWR做宏觀分析,找出大體的分析方向;然后使用ASH數(shù)據(jù)做微觀分析,通過(guò)阻塞鏈分析,執(zhí)行SQL情況的分析等實(shí)現(xiàn)更為精準(zhǔn)的定位,這樣的組合分析是定位性能問(wèn)題根因的有效手段。
不過(guò)國(guó)產(chǎn)數(shù)據(jù)庫(kù)的ASH數(shù)據(jù)與Oracle相比還有很大的差距,上圖是電科金倉(cāng)的ASH數(shù)據(jù),其豐富程度與Oracle還有一定的差距。實(shí)際上Oracle是把SESSION STATE OBJECT中的所有數(shù)據(jù)都做了合并,形成了比v$session更為豐富的數(shù)據(jù)。國(guó)產(chǎn)數(shù)據(jù)庫(kù)廠商也應(yīng)該學(xué)習(xí)一下,ASH不應(yīng)該是個(gè)擺設(shè),而應(yīng)該成為分析阻塞類根因的利器。