如何高效的分析AWR報告


AWR報告分析

1.1 看CPU的負載情況

 

 

 

DBTime:表示CPU花費在處理Oralce非空閑等待和運算上的時間  

DB TIME= DB CPU + Non-Idle Wait +  Wait on CPU queue

Elapsed:表示本AWR報告由多久的快照間隔生成的

負載情況:DBTime / Elapsed * CPUs   這個比值越小 說明DB負載壓力越小

 1.2看事務的繁忙程度、軟硬解析

 Load Profile 主要用來顯示當前系統的一些指示性能的總體參數,部分介紹如下

 

列Per Second:平均每秒

列Per Transaction:平均每個事務

 如圖,平均每秒的事務數Transactions是75,非常小,說明系統壓力非常小,一般來說Transactions不超過200都是正常的,或者200左右都是正常的,超過1000就是非常繁忙了,

再看看平均每秒的日志尺寸是4位數的,平均每個事務的日志尺寸是5位數的,說明了系統訪問不是很頻繁,而單個業務是比較復雜的,

如果反過來,平均每秒日志尺寸比平均每秒事務日志尺寸大很多,說明系統訪問很頻繁,而業務比較簡單,不需要響應很久

  • Redo Size :用來顯示平均每秒的日志大小和平均每個事務的日志大小,有時候可以結合 Transactions 每秒事務數,分析當前事務的繁忙程度
  • Parses:解析次數,包括軟解析 + 硬解析,軟解析優化得不好幾乎等於每秒SQL執行次數, 即執行解析比1:1。理想狀態是解析一次到處運行。
  • Hard Parses:硬解析次數,最好小於每秒20次,否則就要考慮優化相關SQL。
  • Transactions: 事務數量

1.3 看命中率指標

 efficiency percentages是一些命中率指標。Buffer Hint、Library Hint等表示SGA(System global area)的命中率;

Buffer Nowait : Buffer Nowait的這個值一般需要大於99%** 否則可能存在爭用,可以在后面等待事件中進一步確認。

表示在內存獲得數據的未等待比例。在緩沖區中獲取Buffer的未等待比率。

Buffer Hit :如果此值低於80%,應該給數據庫分配更多的內存

表示進程從內存中找到數據塊的比率,監視這個值是否發生重大變化比這個值本身更重要。對於一般的OLTP系統,數據塊在數據緩沖區中的命中率,通常應在95%以上。

Redo NoWait :表示在Log 緩沖區獲得Buffer的未等待比例。如果太低可考慮增加Log Buffer。當redo buffer達到1M時就需要寫到redo log文件,所以一般當redo buffer設置超過1M,不太可能存在等待buffer空間分配的情況。當前,一般設置為2M的redo buffer,對於內存總量來說,應該不是一個太大的值。

In-memory Sort:在內存中排序的比率,如果過低說明有大量的排序在臨時表空間中進行。考慮調大PGA(10g)。如果低於95%,可以通過適當調大初始化參數PGA_AGGREGATE_TARGET或者SORT_AREA_SIZE來解決,注意這兩個參數設置作用的范圍時不同的,SORT_AREA_SIZE是針對每個session設置的,PGA_AGGREGATE_TARGET則時針對所有的sesion的。

Library Hit :如果Library Hit Ratio低於90%,可能需要調大Shared pool區。

表示Oracle從Library Cache中檢索到一個解析過的SQL或PL/SQL語句的比率,當應用程序調用SQL或存儲過程時,Oracle檢查Library Cache確定是否存在解析過的版本,如果存在Oracle立即執行語句;如果不存在Oracle解析此語句,並在Library Cache中為它分配共享SQL區。低的Library Hit Ratio會導致過多的解析,增加CPU消耗,降低性能。

Soft Parse:小於<95%,需要考慮綁定,如果低於80%,那么就可以認為sql基本沒有被重用。

軟解析的百分比(Softs/Softs+Hards),近似當作sql在共享區的命中率,太低則需要調整應用使用綁定變量。sql在共享區的命中率,

Latch Hit:要確保>99%,否則存在嚴重的性能問題。當該值出現問題的時候,我們可以借助后面的等待時間和latch分析來查找解決問題。

Latch是一種保護內存結構的鎖,可以認為是Server進程獲取訪問內存數據結構的許可。要確保Latch Hit>99%,否則意味着Shared Pool latch爭用,可能由於未共享的SQL,或者Library Cache太小,可使用綁定變更或調大Shared Pool解決。

Parse CPU to Parse Elapsd:解析實際運行時間/(解析實際運行時間+解析中等待資源時間),越高越好。如果該比率為100%,意味着CPU等待時間為0,沒有任何等待。

Non-Parse CPU :SQL實際運行時間/(SQL實際運行時間+SQL解析時間),太低表示解析消耗時間過多。如果這個值比較小,表示解析消耗的CPU時間過多。

Execute to Parse:是語句執行與分析的比例,如果要SQL重用率高,則這個比例會很高。該值越高表示一次解析后被重復執行的次數越多。

1.4 看等待事件

 

 Top 10 Foreground Events by Total Wait Time,等待事件是衡量數據庫優化情況的重要指標,通過觀察Event和%DB time兩列就可以直觀看出當前數據庫的主要等待事件

 

1.5 看TOP SQL統計

SQL Statistics 從 11 個維度對SQL進行排序並給出了Top SQL的詳細內容,可以點擊查看具體的SQL內容,進一步分析調優方案。

  • SQL ordered by Elapsed Time。記錄了執行總和時間的 TOP SQL(請注意是監控范圍內該SQL的執行時間總和,而不是單次SQL執行時間 Elapsed Time = CPU Time + Wait Time)。
  • SQL ordered by CPU Time。記錄了執行占CPU時間總和時間最長的TOP SQL(請注意是監控范圍內該SQL的執行占CPU時間總和,而不是單次SQL執行時間)。
  • SQL ordered by Gets。記錄了執行占總 buffer gets (邏輯IO)的TOP SQL(請注意是監控范圍內該SQL的執行占Gets總和,而不是單次SQL執行所占的Gets)。
  • SQL ordered by Reads。記錄了執行占總磁盤物理讀(物理IO)的TOP SQL。
  • SQL ordered by Executions。記錄了按照SQL的執行次數排序的TOP SQL。該排序可以看出監控范圍內的SQL執行次數。
  • SQL ordered by Parse Calls。記錄了SQL的軟解析次數的TOP SQL。
  • SQL ordered by Sharable Memory。記錄了SQL占用library cache的大小的TOP SQL。Sharable Mem (b):占用library cache的大小,單位是byte。
  • SQL ordered by Version Count。記錄了SQL的打開子游標的TOP SQL。
  • SQL ordered by Cluster Wait Time。記錄了集群的等待時間的TOP SQL。

參考AWR深度好文章:  http://www.askmac.cn/archives/performance-tuning-oracle-awr.html

 https://www.cnblogs.com/cocowool/p/quick_view_of_oracle_awr_report.html

https://www.cnblogs.com/mzq123/p/10741208.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM