我是從Oracle 5開始使用Oracle的,不過(guò)Oracle 5、6的時(shí)代,我只是幫用戶安裝Oracle而已,真正的開始關(guān)注數(shù)據(jù)庫(kù)的內(nèi)部,嘗試調(diào)優(yōu)數(shù)據(jù)庫(kù)和解決數(shù)據(jù)庫(kù)的故障是從Oracle 7.1開始的。因此我對(duì)v$sysstat有著十分深厚的感情,雖然從Oracle 7到Oracle 9,以至于到Oracle 11,v$sysstat中的指標(biāo)數(shù)量增加了許多,但是對(duì)這個(gè)系統(tǒng)視圖的用法沒有改變。
2007年的時(shí)候,我和一個(gè)當(dāng)時(shí)供職于Oracle ACS的朋友一起為某個(gè)運(yùn)營(yíng)商優(yōu)化一套短信平臺(tái)系統(tǒng),那個(gè)朋友一看到用戶的數(shù)據(jù)庫(kù)是Oracle 10g,立馬就說(shuō):“老徐,這個(gè)項(xiàng)目還是你來(lái)干吧,我從Oracle 6干到現(xiàn)在,不準(zhǔn)備再去更新10g的知識(shí)了”。那個(gè)時(shí)代Oracle基本上5年迭代一個(gè)版本,而且每個(gè)版本都有一些顛覆性的技術(shù)出現(xiàn)。對(duì)于運(yùn)維的可觀測(cè)性來(lái)說(shuō),從Oracle7到Oracle 10g正是Oracle的可觀測(cè)性體系日漸完善的時(shí)期,變化尤其大。
作為一個(gè)老DBA,用戶一般都是挺尊重我的,記得我剛剛用10g的時(shí)候還鬧過(guò)一個(gè)笑話,當(dāng)時(shí)是給一個(gè)東北的運(yùn)營(yíng)商優(yōu)化系統(tǒng)。當(dāng)我要求在Oracle 10g上安裝一個(gè)statspack的時(shí)候,甲方的DBA雖然沒聽說(shuō)過(guò)啥叫statspack,不過(guò)還是很配合的幫我安裝了。不過(guò)生成完第一份spreport的時(shí)候,那個(gè)DBA不禁笑了,這個(gè)不是和AWR報(bào)告很類似嗎?這是我最后一次讓讓用戶在10g上安裝statspack報(bào)告。
因?yàn)閼T性,在好長(zhǎng)一段時(shí)間里,我一直沒有意識(shí)到Oracle數(shù)據(jù)庫(kù)發(fā)生的變化,也依然使用v$sysstat幫助用戶分析問題。在10g和11g上,我會(huì)使用ASH來(lái)彌補(bǔ)v$sysstat在微觀分析能力上的不足。
直到有一天,公司的小伙伴告訴我實(shí)際上沒必要那么復(fù)雜的去通過(guò)統(tǒng)計(jì)v$sysstat來(lái)計(jì)算指標(biāo),Oracle 已經(jīng)和提供了一個(gè)叫v$metric的系統(tǒng)視圖,我們可以更加方便的獲得這些指標(biāo)。
圖片
后來(lái)我仔細(xì)分析了一下,確實(shí)如此,原來(lái)從Oracle 10g開始Orace已經(jīng)提供了如此強(qiáng)大的指標(biāo)接口。在Oracle 12.1版本中,v$metric已經(jīng)包含了200個(gè)指標(biāo),并且為這些指標(biāo)提供了1秒、5秒、15秒、1分鐘等多種統(tǒng)計(jì)值,用于不同需求的分析。Oracle還提供了一系列的Metric視圖,向用戶提供更加豐富的可觀測(cè)性指標(biāo)。比如eventmetric/sysmetric等。
目前大多數(shù)數(shù)據(jù)庫(kù)都提供類似v$sysstat的系統(tǒng)視圖,用于運(yùn)維人員采集與分析相關(guān)的指標(biāo)。不過(guò)v$sysstat還是太籠統(tǒng)了,還不夠友好。如果能夠像Oracle一樣將sysstat在內(nèi)核中加工,生成各種metric,那么數(shù)據(jù)庫(kù)的可觀測(cè)性能力將會(huì)得到極大的提升。去年的時(shí)候,一個(gè)用戶經(jīng)常會(huì)出現(xiàn)活躍會(huì)話數(shù)異常的情況,那個(gè)時(shí)段里經(jīng)常會(huì)出現(xiàn)核心交易抖動(dòng)。不過(guò)他們的監(jiān)控哪怕把采樣周期調(diào)整得很低,也抓不到這個(gè)現(xiàn)象。我看了一下他們的監(jiān)控系統(tǒng),原來(lái)是通過(guò)統(tǒng)計(jì)v$session的瞬間值來(lái)采集這個(gè)指標(biāo)的,于是我讓他去v$metric和v$metric_history中查找,一下子就抓到了好幾個(gè)異常點(diǎn)。
可能有朋友會(huì)覺得奇怪,在數(shù)據(jù)庫(kù)內(nèi)核中做一個(gè)類似Oracle metric的功能難道很難嗎?確實(shí)很難,因?yàn)閮?nèi)核既要兼顧性能與可靠性,又要提供更多的可觀測(cè)性,確實(shí)很考驗(yàn)架構(gòu)師和研發(fā)人員的水平。通過(guò)埋點(diǎn)實(shí)現(xiàn)的指標(biāo)采集必須代碼性能十分優(yōu)越,否則會(huì)影響數(shù)據(jù)庫(kù)的性能和穩(wěn)定性。因此這些埋點(diǎn)的代碼越簡(jiǎn)潔,做的事情越少越好。一個(gè)數(shù)據(jù)庫(kù)產(chǎn)品要做好這一點(diǎn)確實(shí)是要花大力氣的。
可喜的是,目前已經(jīng)有一些數(shù)據(jù)庫(kù)產(chǎn)品開始提供這方面的可觀測(cè)性接口了,雖然接口還不夠完善,提供的數(shù)據(jù)也沒有Oracle豐富,起碼已經(jīng)看到我們的國(guó)產(chǎn)數(shù)據(jù)庫(kù)廠商也已經(jīng)關(guān)注到了這方的用戶需求了。






