oracle time model,Oracle Time Model Statistics(時間模型統計)

Oracle數據庫從10g開始,啟用以時間模型統計為主,命中率為輔等性能度量指標。基於時間模型統計,主要是基於操作類型測量在數據庫中花費的時間的統計信息。最重要的時間模型統計是數據庫時間,或DB時間。數據庫時間表示在數據庫調用中所花費的總時間,是實例工作負載量的總指示器。本文描述時間模型統計相關知識點。

一、 DB Time(數據庫時間)與User Response Time(用戶響應時間)

1、DB Time(數據庫時間)

下圖為 DB Time in Overall User Response Time

9f9577dd5fd689100350cc1ef9f3b457.gif

即所有花費在數據庫層面調用時間的總和,包括所有會話(前台進程)以及非空閑等待,CPU時間等

如上圖所示,從客戶端Browser請求到客戶端Browser響應,經歷了很多個中間環節,DB Time僅僅是其中的一部分

2、User Response Time(用戶響應時間)

下圖為 DB Time in User Transaction

ccaaf9676cf502a1d2c967a31d1597f9.gif

在上圖各個部分的操作中:

用戶向數據庫發出請求,使用向下箭頭所示。用於處理請求的數據庫所花費的CPU時間和等待數據庫等待的時間被認為是DB時間,由陰影區域表示一旦請求完成,結果將返回給用戶,如上箭頭所示。

上下箭頭之間的空間代表處理請求的總用戶響應時間,它包含除DB時間以外的其他組件。

基於作者查詢小說

用戶具基於特定的作者查詢小說,此時產生應用程序完成基於作者的數據庫查詢操作。

瀏覽查詢結果

當用戶查看查詢結果時,有一些額外的數據庫查詢會產生,如小說庫存狀態,用戶瀏覽總量。

添加商品到購物車

在瀏覽了小說的細節后,用戶決定將其中一部小說加入購物車。這會導致應用程序進行數據庫調用來更新購物車。

結算

用戶通過以前保存在站點的地址和以及新生成的付款信息,完成交易。這會導致應用程序執行各種數據庫操作以檢索用戶信息,添加新訂單,更新庫存,並生成電子郵件確認。

二、AWR中的時間模型統計報告Time Model Statistics DB/Inst: ORA11G/ora11g Snaps: 551-553

-> Total time in database user-calls (DB Time): 1264.3s

-> Statistics including the word "background" measure background process

time, and so do not contribute to the DB time statistic

-> Ordered by % or DB time desc, Statistic name

Statistic Name Time (s) % of DB Time

------------------------------------------ ------------------ ------------

sql execute elapsed time 1,188.0 94.0

DB CPU 274.3 21.7

parse time elapsed 10.1 .8

connection management call elapsed time 6.5 .5

PL/SQL execution elapsed time 3.2 .3

hard parse elapsed time 2.9 .2

PL/SQL compilation elapsed time 0.5 .0

hard parse (sharing criteria) elapsed time 0.4 .0

hard parse (bind mismatch) elapsed time 0.1 .0

repeated bind elapsed time 0.0 .0

failed parse elapsed time 0.0 .0

sequence load elapsed time 0.0 .0

DB time 1,264.3

background elapsed time 857.8

background cpu time 25.4

三、時間模型統計重要組成部分說明

在Oracle數據庫中,最重要的時間模型統計是DB Time和DB CPU。這兩個統計數據直接顯示數據庫的工作量和描述整個數據庫的響應時間。

DB Time

執行數據庫用戶級別調用所花費的時間(以微秒為單位)的量。這還不包括花在實例后台進程的時間,如PMON進程。DB Time測量時間實例啟動后開始累積。由於DB時間是由所有非空閑用戶會話的時間相結合來計算的,所以DB時間可能超過實例開始后所經過的實際時間。例如,已經運行了30分鍾的實例可能有四個活動用戶會話,其累積DB時間大約為120分鍾。

DB CPU

在數據庫用戶級調用上花費的CPU時間(微秒)。

connection management call elapsed time

所有 Session 連接和斷開連接所消耗的時間 .

Sequence load elapsed time

從數據字典獲取下一個序列號所花費的時間。如果一個序列被緩存,那么花費的時間為當序列被用完補充緩存需要的時間。在cache中尋找新的sequence的時間是不計算在內。而對於non-cached 的情況,那么這個時間就是獲取 nextval 的時間。

SQL execute elapsed time

SQL statements 執行所花費的總的時間 , 注意對於 select 語句來說 . 這同樣包括獲取 (fetch) 查詢結果的時間

parse time elapsed

解析 SQLStatements 的總共時間 , 它包括了軟解析和硬解析 .

6.1 hard parse elapsed time(硬解析所花費的總的時間)

6.2 failed parse elapsed time(所有解析過程中遇到錯誤SQL 的解析所花費時間)

6.3 hard parse (sharing criteria) elapsed time (當無法從 SQL Cache 中找到一個已經存在的 cursor 的時候 , 所有硬解析所花費的時間)

6.4 hard parse (bind mismatch) elapsed time (當可以從 SQL Cache 找到一個已經存在的 curosr, 但是綁定變量不匹配的時候 , 所有硬解析花費的時間)

PL/SQL execution elapsed time

所有花在執行 PL/SQL interpreter 的時間 (PL/SQL interpreter - 就是 debug workspace), 但這不包括花在recursively executing/parsing SQL statements 上的時間,以及 recursively executing the Java VM 上的時間

PL/SQL compilation elapsed time

所有花在 PL/SQL compiler 上的時間 .

inbound PL/SQL rpc elapsed time

所有入站的遠程調用所運行的時間(也就是說,從其他的instance通過數據鏈接到本數據庫的調用),包括了所有SQL和Java的遞歸調用

四、基於時間模型統計調用腳本

1、查看用戶CPU使用情況SELECT ss.username, se.SID, VALUE / 100 cpu_usage_seconds

FROM v$session ss, v$sesstat se, v$statname sn

WHERE se.STATISTIC# = sn.STATISTIC#

AND NAME LIKE '%CPU used by this session%'

AND se.SID = ss.SID

AND ss.status = 'ACTIVE'

AND ss.username IS NOT NULL

ORDER BY VALUE DESC;

USERNAME SID CPU_USAGE_SECONDS

--------------- ---------- -----------------

SYSMAN 156 77.69

DBSNMP 66 25.86

SYS 131 .06

DBSNMP 66 0

SYS 131 0

2、基於時間模型查詢相關等待事件COLUMN wait_class FORMAT a20

COLUMN name FORMAT a30

COLUMN time_secs FORMAT 999,999,999,999.99

COLUMN pct FORMAT 99.99

SELECT wait_class,

NAME,

ROUND (time_secs, 2) time_secs,

ROUND (time_secs * 100 / SUM (time_secs) OVER (), 2) pct

FROM (SELECT n.wait_class, e.event NAME, e.time_waited / 100 time_secs

FROM v$system_event e, v$event_name n

WHERE n.NAME = e.event

AND n.wait_class <> 'Idle'

AND time_waited > 0

UNION

SELECT 'CPU', 'server CPU', SUM (VALUE / 1000000) time_secs

FROM v$sys_time_model

WHERE stat_name IN ('background cpu time', 'DB CPU'))

ORDER BY time_secs DESC;

WAIT_CLASS NAME TIME_SECS PCT

-------------------- ------------------------------ ------------------- ------

System I/O control file parallel write 3,671.39 33.70

System I/O db file async I/O submit 1,832.96 16.82

CPU server CPU 1,824.20 16.74

System I/O log file parallel write 1,396.98 12.82

Commit log file sync 936.36 8.59

User I/O direct path write 570.01 5.23

Concurrency os thread startup 138.38 1.27

Configuration log file switch (checkpoint in 120.05 1.10

complete)

五、相關視圖數據字典

V$SYS_TIME_MODEL

V$SESS_TIME_MODEL

DBA_HIST_SYS_TIME_MODEL

cc96086a4caa98d40c3b35bbc3f29e13.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值