楊春松,王 寬
(1.南瑞集團(tuán)有限公司,江蘇 南京211000;2.南京基石數(shù)據(jù)有限責(zé)任公司,江蘇 南京210093)
在日常的數(shù)據(jù)庫(kù)維護(hù)和性能優(yōu)化中,大多數(shù)情況是平時(shí)沒(méi)問(wèn)題,有問(wèn)題時(shí)沒(méi)法解決,或者不敢去操作,通常都是在數(shù)據(jù)庫(kù)已經(jīng)出現(xiàn)了比較明顯且嚴(yán)重的問(wèn)題時(shí)才開(kāi)始采取優(yōu)化措施,并且是在解決問(wèn)題之后,而不是發(fā)現(xiàn)問(wèn)題之前。但是這時(shí)候基本上已經(jīng)對(duì)應(yīng)用造成了影響[3],且依賴高水平的DBA去解決這些問(wèn)題,削弱減少這些影響。那我們?nèi)绾尾拍茚槍?duì)數(shù)據(jù)庫(kù)已展現(xiàn)的一些“量”的問(wèn)題進(jìn)行診斷,優(yōu)化,從而防止其成為“質(zhì)”的問(wèn)題呢?
“吞吐量”和”響應(yīng)時(shí)間”是衡量Oracle數(shù)據(jù)庫(kù)性能的最主要的兩個(gè)方面[2]。通常情況下可以通過(guò)優(yōu)化生產(chǎn)環(huán)境的操作系統(tǒng)、數(shù)據(jù)庫(kù)環(huán)境、網(wǎng)絡(luò)IO及應(yīng)用程序等策略來(lái)提高這兩項(xiàng)指標(biāo),AWR報(bào)告基本囊括了以上的指標(biāo)內(nèi)容[1]。根據(jù)上述內(nèi)容,我們制定了一套由操作系統(tǒng),數(shù)據(jù)庫(kù)命中率,數(shù)據(jù)庫(kù)IO相關(guān),數(shù)據(jù)庫(kù)RAC相關(guān),數(shù)據(jù)庫(kù)并發(fā)相關(guān),數(shù)據(jù)庫(kù)整體情況的診斷模型,用其診斷數(shù)據(jù)庫(kù),根據(jù)診斷結(jié)果提出建議,優(yōu)化方案的項(xiàng)目。該項(xiàng)目用zookeeper作為通信,采用B/S架構(gòu),支持高并發(fā),多種采集腳本,多種操作系統(tǒng),目前支持的數(shù)據(jù)庫(kù)的版本暫時(shí)有Oracle10g,Oracle11g。針對(duì)不同的業(yè)務(wù)場(chǎng)景的實(shí)際生產(chǎn)環(huán)境的生產(chǎn)庫(kù),制定了多種評(píng)分模型,整體模型組成基本不變,加減項(xiàng)權(quán)重發(fā)生改變。原則上只對(duì)生產(chǎn)庫(kù)進(jìn)行系統(tǒng)表的查詢操作,并采用采集腳本周期性一次采集計(jì)算入庫(kù),這樣可以占用少量的資源和會(huì)話數(shù)。應(yīng)當(dāng)指出的是,由于數(shù)據(jù)庫(kù)、操作系統(tǒng)、應(yīng)用軟件是相互依存的組成部分,都必須調(diào)整相互配合才能產(chǎn)生最佳的性能,因此該工程也會(huì)對(duì)數(shù)據(jù)庫(kù)所在服務(wù)器進(jìn)行相關(guān)數(shù)據(jù)的采集,而對(duì)應(yīng)的評(píng)分模型則應(yīng)根據(jù)系統(tǒng)的具體情況以及特點(diǎn),具體分析和調(diào)整。這樣才能減少現(xiàn)場(chǎng)運(yùn)維人員的工作量,簡(jiǎn)化了運(yùn)維操作與操作流程,降低了各種生產(chǎn)環(huán)境對(duì)高級(jí)DBA的依賴。
實(shí)際上在針對(duì)Oracle10g及以上的數(shù)據(jù)庫(kù)進(jìn)行診斷分析時(shí),參考AWR報(bào)告,但又不完全依賴AWR報(bào)告,并且本質(zhì)上AWR報(bào)告是對(duì)Oracle數(shù)據(jù)庫(kù)本身的時(shí)間段內(nèi)的自檢,底層也是通過(guò)SQL查詢各種系統(tǒng)表實(shí)現(xiàn)的,該項(xiàng)目直接通過(guò)生成AWR報(bào)告的底層SQL,寫成通用和定制腳本,對(duì)數(shù)據(jù)庫(kù)運(yùn)行狀態(tài)的瞬時(shí)數(shù)據(jù)進(jìn)行查詢并持久化到數(shù)據(jù)庫(kù),流程如圖1所示。因此可以將采集數(shù)據(jù),計(jì)算結(jié)果,分析內(nèi)容,分析結(jié)果,優(yōu)化建議,優(yōu)化操作等進(jìn)行可視化展示,從而讓用戶對(duì)自己的生產(chǎn)庫(kù)的運(yùn)行狀況有一個(gè)總體的認(rèn)知,能夠有效地診斷出數(shù)據(jù)庫(kù)的問(wèn)題或者隱患,能夠針對(duì)這問(wèn)題或隱患提出優(yōu)化建議和解決辦法。與此同時(shí)該工程還能形成日檢報(bào)告,讓運(yùn)維人員對(duì)生產(chǎn)庫(kù)過(guò)去一天運(yùn)維狀況大致地了解,提高DBA對(duì)應(yīng)生產(chǎn)庫(kù)以及生產(chǎn)環(huán)境的后續(xù)運(yùn)維的工作效率。
按照?qǐng)D1的流程可以發(fā)現(xiàn),該項(xiàng)目針對(duì)多種生產(chǎn)庫(kù)進(jìn)行數(shù)據(jù)的采集,結(jié)果的計(jì)算,內(nèi)容的分析,結(jié)果的分析,優(yōu)化建議,優(yōu)化操作。而針對(duì)不同的生產(chǎn)環(huán)境或者生產(chǎn)庫(kù),我們就需要定制不同的模型去適配,從而保證模型的優(yōu)選。需要指出的是,這是一個(gè)學(xué)習(xí)的過(guò)程,我們并不能證明模型與生產(chǎn)庫(kù)匹配的正確性,但是能夠保證模型與生產(chǎn)庫(kù)匹配的合理性,這是一個(gè)日積月累的過(guò)程,是各個(gè)領(lǐng)域的DBA對(duì)生產(chǎn)環(huán)境,生產(chǎn)庫(kù)運(yùn)維知識(shí)的沉淀與積累,同時(shí)也具備了一定的先見(jiàn)性,可以見(jiàn)微知著,防患于未然。
圖1 數(shù)據(jù)庫(kù)診斷流程
上文所述,該項(xiàng)目定制了模型包含很多個(gè)指標(biāo)項(xiàng),這些指標(biāo)項(xiàng)就是通底層SQL(采集腳本)查詢得到。該模型對(duì)比AWR報(bào)告又區(qū)別于它,AWR報(bào)告是將強(qiáng)關(guān)聯(lián)的相關(guān)數(shù)據(jù)內(nèi)容進(jìn)行展示,但是該模型是將可能影響數(shù)據(jù)庫(kù)性能負(fù)載的相關(guān)項(xiàng)都采集進(jìn)來(lái),再加權(quán)算比重,對(duì)數(shù)據(jù)庫(kù)進(jìn)行打分,通過(guò)分值體現(xiàn)數(shù)據(jù)庫(kù)的健康、運(yùn)行、性能負(fù)載等狀態(tài)。在一定的分值范圍內(nèi)告知運(yùn)維人員,針對(duì)減分項(xiàng)如何去調(diào)優(yōu),針對(duì)問(wèn)題項(xiàng)如何去解決,從而解決平時(shí)的“量”的問(wèn)題,有效防止由量的問(wèn)題所產(chǎn)生的質(zhì)的問(wèn)題,同時(shí)即便產(chǎn)生了質(zhì)的問(wèn)也能通過(guò)分值波動(dòng)轉(zhuǎn)折點(diǎn),采集項(xiàng)值的斷崖式上升或下降快速定位問(wèn)題。
該項(xiàng)目幫助DBA日常梳理優(yōu)化數(shù)據(jù)庫(kù)與服務(wù)器,但是仍是免不了出現(xiàn)一些日常維護(hù)以外的問(wèn)題,而這些問(wèn)題的引因、優(yōu)化方式、解決辦法等通常都是超出了運(yùn)維人員的操作、認(rèn)知和解決能力的范疇,通過(guò)該工程的模型分析和歷史數(shù)據(jù)對(duì)比,以及問(wèn)題的快速定位,可以幫助初級(jí)DBA對(duì)生產(chǎn)庫(kù)以及服務(wù)器的運(yùn)維,從而減少了大多數(shù)情況下對(duì)高級(jí)DBA的依賴,間接優(yōu)化了運(yùn)維人員結(jié)構(gòu),發(fā)揮最大效益。
ORACLE數(shù)據(jù)庫(kù)的性能優(yōu)化調(diào)整是一個(gè)系統(tǒng)工程,涉及的方面很多。同時(shí)也是一個(gè)漸進(jìn)的過(guò)程,隨著系統(tǒng)的運(yùn)行和數(shù)據(jù)量的增加,方法變得多樣。DBA需要綜合運(yùn)用優(yōu)化的方法,認(rèn)真分析其運(yùn)行過(guò)程中出現(xiàn)的各種問(wèn)題,才能保證數(shù)據(jù)庫(kù)高效地運(yùn)行。該項(xiàng)目基本包含了DBA認(rèn)知范圍內(nèi)所有的業(yè)務(wù)場(chǎng)景、生產(chǎn)環(huán)境。因而可以按需定制,針對(duì)不同的業(yè)務(wù)場(chǎng)景、生產(chǎn)庫(kù),制定不同的模型,才能最優(yōu)地發(fā)現(xiàn)其所對(duì)應(yīng)的隱患和問(wèn)題,才能讓低級(jí)運(yùn)維人員也能在可控范圍內(nèi)對(duì)數(shù)據(jù)庫(kù)進(jìn)行性能優(yōu)化、問(wèn)題解決等操作。