王召 強(qiáng)潤(rùn)皓
摘要:數(shù)據(jù)庫性能評(píng)估旨在幫助運(yùn)維人員分析數(shù)據(jù)庫性能,發(fā)現(xiàn)問題,指導(dǎo)調(diào)優(yōu)。本文從Oracle數(shù)據(jù)庫基準(zhǔn)指標(biāo)中篩選出有負(fù)載代表性和性能代表性的指標(biāo),建立了一種基于負(fù)載的性能評(píng)估模型。
關(guān)鍵詞:Oracle;AWR;性能分析;負(fù)載分析
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)07-0072-02
1 基準(zhǔn)指標(biāo)選取
用戶響應(yīng)時(shí)間是影響用戶體驗(yàn)的首要因素,響應(yīng)時(shí)間越短說明性能越好, 因此一個(gè)數(shù)據(jù)庫性能高低主要是通過響應(yīng)時(shí)間來判斷的(用戶層面的響應(yīng)時(shí)間包含了客戶端請(qǐng)求到響應(yīng),中間涉及多個(gè)環(huán)節(jié),這里只討論數(shù)據(jù)庫時(shí)間)。按照Oracle時(shí)間模型統(tǒng)計(jì):Response time=Service time+Wait time。服務(wù)時(shí)間指前后臺(tái)進(jìn)程占用CPU的時(shí)間,這里只關(guān)注前臺(tái)進(jìn)程,從中選取最有代表性的DB CPU和CPU TIME,計(jì)算得到一段時(shí)間內(nèi)每秒、每執(zhí)行及每調(diào)用的值,作為關(guān)鍵性能指標(biāo)。
等待時(shí)間由各種等待事件產(chǎn)生,等待事件分多種類型,如系統(tǒng)IO,用戶IO,并發(fā)等。我們選取一段時(shí)間內(nèi)產(chǎn)生的TOP 20等待事件,按等待類合并,計(jì)算得到TOP 3等待類的平均等待時(shí)間,作為關(guān)鍵性能指標(biāo)。
我們同時(shí)加入了一些和時(shí)間無關(guān)的指標(biāo),如數(shù)據(jù)緩存命中率、共享池命中率及LATCH命中率等,作為輔助指標(biāo)參與到性能評(píng)估中。
評(píng)估數(shù)據(jù)庫性能需要結(jié)合負(fù)載來分析,不同業(yè)務(wù)系統(tǒng)或同一系統(tǒng)在不同時(shí)段負(fù)載可能大不相同。不同負(fù)載下,數(shù)據(jù)庫性能指標(biāo)會(huì)發(fā)生變化,單一的用一個(gè)策略進(jìn)行性能評(píng)估,結(jié)果準(zhǔn)確性會(huì)大打折扣。因此我們選取一些負(fù)載相關(guān)的指標(biāo)建立負(fù)載模型,計(jì)算出負(fù)載指數(shù)作為衡量負(fù)載大小的依據(jù)。性能模型基于負(fù)載的大小,應(yīng)用不用的評(píng)估策略。
在負(fù)載指標(biāo)的選取上,我們參考了AWR報(bào)告中的Load Profile,它提供了IO、并發(fā)等方面的指標(biāo)作為負(fù)載參考,如每秒日志量、每秒邏輯讀、每秒物理讀、每秒物理寫、每秒用戶調(diào)用、每秒活躍會(huì)話等,我們將這些指標(biāo)納入負(fù)載模型并分配權(quán)重。
2 指標(biāo)采樣方式
指標(biāo)從AWR數(shù)據(jù)中抽取,周期掃描AWR,如有新的AWR產(chǎn)生則用PL/SQL腳本進(jìn)行采集。采集方式如下:
(1)確認(rèn)目標(biāo)庫和起點(diǎn)SNAPSHOT ID。
(2)腳本找到與起點(diǎn)相鄰的SNAPSHOT,查詢出原始指標(biāo),通過計(jì)算,得到最終指標(biāo)值。此外,從DBA_HIST_SEG_STAT等表中可以直接查詢到部分指標(biāo)的delta值。腳本同時(shí)返回下一個(gè)SNAPSHOT ID,這將是下次采集的起點(diǎn)。
3 模型與評(píng)估
3.1 模型
(1)負(fù)載模型總分100分,得分劃分成A-D負(fù)載等級(jí),依次表示負(fù)載很高,較高,一般和很低。得分=∑指標(biāo)得分,考慮到指標(biāo)缺失的情況,實(shí)際得分=得分×(1+缺失項(xiàng)占比(%))。
(2)負(fù)載指標(biāo)劃分4級(jí)閾值范圍,等級(jí)分依次為4、3、2,1分,指標(biāo)得分的計(jì)算公式為:等級(jí)分/4×權(quán)重占比(%)。
(3)性能模型總分100分,得分計(jì)算方式同負(fù)載。
(4)性能指標(biāo)設(shè)定4級(jí)閾值范圍,需指定適用的負(fù)載等級(jí)。得分計(jì)算方式同負(fù)載,如表1。
3.2 評(píng)估
按照上述模型計(jì)算得到的結(jié)果繪圖1,可以直觀得到數(shù)據(jù)庫運(yùn)行過程中負(fù)載的變化情況,以及在不同負(fù)載下的性能表現(xiàn)。
4 結(jié)語
基于負(fù)載的性能分析模型,通過針對(duì)不同的負(fù)載等級(jí)應(yīng)用不同的性能評(píng)估策略,可以更加準(zhǔn)確的反映Oracle數(shù)據(jù)庫的性能表現(xiàn),同時(shí)也可以為運(yùn)維分析提供更多更準(zhǔn)確的優(yōu)化指導(dǎo)。
參考文獻(xiàn)
[1]Shallahamer, C. Oracle Performance Triage: Stop The Bleeding!OraPub White Paper,2001.
[2]Jain, R. The Art of Computer Systems Performance Analysis. John Wiley & Sons,1991.ISBN 0-471-50336-3.