v$active_session_history的wait_time和time_waited 列

路途中的人2012發表於2017-06-29

最近在弄informix,oracle調優也好久沒碰了,今天朋友問我v$active_session_history的wait_time和time_waited 怎麼看,只記得用過,一下也沒想起。連忙驗證了下

wait_time 這列,對於在取樣時,正在等待的事件,該列為0。對應session_state列。不為0的行是在進行CPU

time_waited這列,是這次等待的等待時間,如果該種類的等待的時間的超時時間大於1秒,那麼如果等待了超過了1秒,本次取樣的time_waited為0,在最後一次取樣到該等待時,置上等待時間。單位百萬分之一秒。也就是說,time_waited為0的行也不用看,因為等待時候在後面會體現,其和最後的行是同一次等待。

下面是以前用過的一個SQL

SELECT EVENT,
    COUNT(*) TOTAL_WAITS,
    TRUNC(SUM(TIME_WAITED) / 1000000) SECONDS_IN_WAIT
 FROM V$ACTIVE_SESSION_HISTORY
 WHERE SESSION_STATE = 'WAITING'
  AND TIME_WAITED > 0
  AND SAMPLE_ID BETWEEN 1800000 AND 2000000
  AND SESSION_ID = 144
  AND SQL_ID = 'cgb71p2hy4zfj'
 GROUP BY EVENT

其實v$active_session_history就是一個語句在執行中遇到的所有等待的統計,可以一定程度上代替10046來檢視SQL遭遇的等待

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2141401/,如需轉載,請註明出處,否則將追究法律責任。

相關文章