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