理解EXECUTE_TO_PARSE(一)
問題:
在分析AWR報告時,在Instance Efficiency Percentages (Target 100%)中有“Execute to Parse %”統計項,
而且該值一般並不是期望的接近100,一般達到60-70%都認為正常。
本文透過如下方法,幫助進一步理解該引數:
(一)分析STATSPACK中該引數計算方法
(二)執行SQL,跟蹤會話統計資訊中相關統計項變化
1,計算公式,含義
在相關文件中查到該引數定義如下:
Execute to Parse % = 100% * (1 - Parses/Executions)
該引數是語句執行和分析了多少次的度量。可以這麼理解:
* 在一個分析,然後執行語句,且再也不在同一個會話中執行它的系統中,這個比值為0。
* 如果系統Parses > Executions,就可能出現該比率小於0的情況,該值<0通常說明shared pool設定或效率存在問題,造成反覆解析。
* 如果該值為負值或者極低,通常說明資料庫效能存在問題。
2,分析STATSPACK中該比值計算方法
2.1報表輸出項
$ORACLE_HOME/rdbms/admin/sprepins.sql:
select 'Instance Efficiency Indicators' ch30n
,'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' ch30n
,' Buffer Nowait %:' ch28n
, round(100*(1-:bfwt/:gets),2) pctval
,' Redo NoWait %:' ch20
, decode(:rent,0,to_number(null), round(100*(1-:rlsr/:rent),2)) pctval
,' Buffer Hit %:' ch28n
, round(100*(1 - :phyrc/:gets),2) pctval
,' Optimal W/A Exec %:' ch20
, decode((:srtm+:srtd),0,to_number(null),
round(100*:srtm/(:srtd+:srtm),2)) pctval
,' Library Hit %:' ch28n
, round(100*:lhtr,2) pctval
,' Soft Parse %:' ch20
, round(100*(1-:hprs/:prse),2) pctval
,' Execute to Parse %:' ch28n
, round(100*(1-:prse/:exe),2) pctval
,' Latch Hit %:' ch20
, round(100*(1-:lhr),2) pctval
,'Parse CPU to Parse Elapsd %:' ch28n
, decode(:prsela, 0, to_number(null)
, round(100*:prscpu/:prsela,2)) pctval
,' % Non-Parse CPU:' ch20
, decode(:tcpu, 0, to_number(null)
, round(100*(1-(:prscpu/:tcpu)),2)) pctval
from sys.dual;
==>注意其中'Execute to Parse %:' 項:round(100*(1-:prse/:exe),2)
2.2獲取prse,exe數值:
$ORACLE_HOME/rdbms/admin/sprepins.sql:
begin
STATSPACK.STAT_CHANGES
(
...
prse,
...
exe,
...
);
...
end;
/
2.3檢視STATSPACK.STAT_CHANGES程式碼:
$ORACLE_HOME/rdbms/admin/spcpkg.sql:
procedure STAT_CHANGES:
begin
...
prse := SYSDIF('parse count (total)');
...
exe := SYSDIF('execute count');
...
end;
==>函式SYSDIF用於獲取統計資料之差,即v$sysstat中相關統計項兩次snap之間的差值
2.4相關統計項:
select * from v$statname where name in('parse count (total)','execute count');
STATISTIC# NAME CLASS STAT_ID
338 parse count (total) 64 63887964
342 execute count 64 2453370665
SELECT * FROM v$sysstat WHERE statistic# IN (342, 338);
STATISTIC# NAME CLASS VALUE STAT_ID
338 parse count (total) 64 109842769 63887964
342 execute count 64 181337684 2453370665
這裡:
parse count (total):解析次數,包括軟解析和硬解析
execute:執行次數,包括遞迴執行
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18922393/viewspace-696960/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 理解EXECUTE_TO_PARSE(二)
- 理解 TCP(一):埠TCP
- 理解Shadow DOM(一)
- vue之元件理解(一)Vue元件
- 深入理解HashMap(一)HashMap
- react理解(一)jsxReactJS
- [SANSwitch] SANSwitch 一點理解
- 深入理解 GCD(一)GC
- hwm的一點理解
- 理解PHP底層原理(一)PHP
- [JS系列一]原型的理解JS原型
- 理解JSON Web Token (一)JSONWeb
- 如何理解物件導向(一)物件
- 深入理解Java反射(一)Java反射
- 通俗理解一些概念
- 一合相的理解
- SpringCloud微服務理解(一)SpringGCCloud微服務
- 設計模式個人理解(一)設計模式
- 一起理解 Virtual DOM
- v$undostat的一點理解
- 一步一步理解命令模式模式
- lucene(一) lucene一些概念的理解
- 簡單理解DNS解析流程(一)DNS
- 【理解】一道 JS 面試題JS面試題
- JSON的一些理解JSON
- 回撥函式的理解(一)函式
- 通過一個案例理解 JWTJWT
- 深入理解Plasma(一)Plasma 框架ASM框架
- 【譯】理解Rust中的Futures (一)Rust
- 集合第一個Array List理解
- 深入理解 tcp 協議(一)TCP協議
- ASM Failure Group的一點理解ASMAI
- Java學習之流Stream理解(一)Java
- 深入理解C語言(一)C語言
- orion使用的一些理解
- 對Thrift的一點點理解
- 關於crontab 的一點理解
- java 繼承多型的一些理解和不理解Java繼承多型