PerformanceTuning 筆記4 v$librarycache的分析
調優Library Cache的核心思想就是減少解析(parse)
主要手段:
解讀Library Cache統計資訊:
在動態效能檢視v$librarycache中reload的值應該接近0,如果該值很高就需要調整了。表示已經解析過的SQL由於某種原因被喚出了。如果該SQL語句再次執行需要重新解析。因此減少reload的次數是關鍵。
在動態效能檢視v$librarycache中invalidations值應該接近0。如果改制較高,可能是因為DDL操作導致表結構改變,之前解析的結果全部失效。
在動態效能檢視v$sgastat中的free memory的值應該儘可能低。如果reload值比較高很可能是因為記憶體太小導致。為shared pool分配足夠的記憶體可以提升效果。
librarycahce的命中率:下圖中由於library cache太小導致很多的parse結果被喚出了(reloads 13105)
reloads值應該小於pins的1%。如果reloads大於1,並且free memory值很低通常是因為library cache太小導致。可以透過擴充shared pool的大小來解決。
SQL> select sum(pins) "executions",sum(reloads) "cache misses",sum(reloads)/sum(pins) from v$librarycache;
executions cache misses SUM(RELOADS)/SUM(PINS)
---------- ------------ ----------------------
4985760 33921 .006803577
注意該值是資料庫執行以來的歷史累加值,如果想要取得某個階段的確切至應該使用AWR報告或者statspack。
或者間隔一個時間段分別執行兩次select namespace,gethitratio,pinhitratio,reloads,invalidations from v$librarycache;對比各個欄位值的變化。
下面的SQL可以顯示正在執行中的SQL語句
根據已知資訊查詢SQL語句的完整資訊
主要手段:
- 確保使用者使用共享的SQL語句
- 分配足夠多的記憶體防止已經parse的sql語句被喚出。
- 避免無效物件的產生。比如drop掉原有的snow.t1表,重建snow.t1表。這樣再執行該表的查詢操作時,看似表名沒有變化但是查詢需要重新解析。
- 為記憶體需求比較大的SQL保留一部分空間。
- 將常用的一些應用固定在Library cache中不被喚出。
- 消除大量的匿名PL/SQL程式碼塊
- Gets:(解析階段)查詢該SQL是否已經解析過了
- GetsHits:查詢命中率
- Pins:(執行階段)讀取或執行的次數
- Reloads:(解析階段)執行期間找到的物件無效了,或者被喚出了,需要重新解析。
- Invalidations:(解析階段)如果解析後的物件被改變了,需要重新解析。
解讀Library Cache統計資訊:
在動態效能檢視v$librarycache中reload的值應該接近0,如果該值很高就需要調整了。表示已經解析過的SQL由於某種原因被喚出了。如果該SQL語句再次執行需要重新解析。因此減少reload的次數是關鍵。
在動態效能檢視v$librarycache中invalidations值應該接近0。如果改制較高,可能是因為DDL操作導致表結構改變,之前解析的結果全部失效。
在動態效能檢視v$sgastat中的free memory的值應該儘可能低。如果reload值比較高很可能是因為記憶體太小導致。為shared pool分配足夠的記憶體可以提升效果。
librarycahce的命中率:下圖中由於library cache太小導致很多的parse結果被喚出了(reloads 13105)
reloads值應該小於pins的1%。如果reloads大於1,並且free memory值很低通常是因為library cache太小導致。可以透過擴充shared pool的大小來解決。
SQL> select sum(pins) "executions",sum(reloads) "cache misses",sum(reloads)/sum(pins) from v$librarycache;
executions cache misses SUM(RELOADS)/SUM(PINS)
---------- ------------ ----------------------
4985760 33921 .006803577
注意該值是資料庫執行以來的歷史累加值,如果想要取得某個階段的確切至應該使用AWR報告或者statspack。
或者間隔一個時間段分別執行兩次select namespace,gethitratio,pinhitratio,reloads,invalidations from v$librarycache;對比各個欄位值的變化。
下面的SQL可以顯示正在執行中的SQL語句
根據已知資訊查詢SQL語句的完整資訊
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29047826/viewspace-1335794/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PerformanceTuning 筆記3 從程式設計師的角度來關注librarycache的使用ORM筆記程式設計師
- PerformanceTuning 筆記2 繫結變數ORM筆記變數
- PerformanceTuning筆記1 常用工具ORM筆記
- 幻影v1.5b3脫殼分析筆記筆記
- Oracle動態效能檢視學習筆記(4)_v$rollstatOracle筆記
- redis個人原始碼分析筆記4--hash物件的儲存Redis原始碼筆記物件
- 幻影v1.5b3脫殼分析筆記之二筆記
- docker 筆記4Docker筆記
- JUC筆記(4)筆記
- Oracle動態效能檢視學習筆記(4)_v$waitstatOracle筆記AI
- JAVA自學筆記(4)Java筆記
- c++筆記4C++筆記
- 4,子程式(筆記)筆記
- 課堂筆記4筆記
- 閱讀筆記4筆記
- 第4關-精華筆記筆記
- swift學習筆記《4》Swift筆記
- Day4晚筆記筆記
- FPGA讀書筆記4FPGA筆記
- Rails 4 學習筆記AI筆記
- CCNA學習筆記4筆記
- Delphi逆向工程筆記[4]筆記
- vue學習筆記4Vue筆記
- Java學習筆記4Java筆記
- [筆記]解析v$log/v$logfile中status列值的含義筆記
- vue 基礎入門筆記 05:v-for、v-ifVue筆記
- Vue2.5筆記:v-if 和 v-show指令Vue筆記
- mp4v2開發筆記(一): mp4v2庫介紹,mp4v2在ubuntu上交叉編譯移植到海思Hi35xx平臺筆記Ubuntu編譯
- FutureTask原始碼分析筆記原始碼筆記
- 原始碼分析筆記——OkHttp原始碼筆記HTTP
- python學習筆記4Python筆記
- Webpack4學習筆記Web筆記
- p4 學習筆記筆記
- webpack4實操筆記Web筆記
- webpack4 + typescript 配置筆記WebTypeScript筆記
- QT學習筆記4(動畫)QT筆記動畫
- Android學習筆記(4)Android筆記
- 【Go學習筆記4】切片Go筆記