天天看點

oracle資料庫dba_hist等視圖中的Delta相關字段介紹

    從10g開始,我們采用awr報告來分析資料庫的性能,我們發現增加了很多dba_hist相關的視圖,其中基于時間相關的字段delta開始出現,對于我們計算語句的時間消耗很有幫助!

其實Delta 表示第四個希臘字母,大寫為Δ,小寫為δ,其在數學和科學,表示變量的變化

在Oracle中的Delta number其實是指在采樣間隔内,名額的增加值,也就是2個采樣間的內插補點

有Delta相關字段的表為dba_hist_active_sess_history、DBA_HIST_SEG_STAT、DBA_HIST_SQLSTAT

Delta可以省略以前隻能用分析函數來計算兩個快照間內插補點辦法,可以直接查詢

如果部分快照沒有捕獲對象統計資訊,那麼用分析函數也無法得到該期間的數值,但是如果有delta字段,可以直接查詢

SQL> SELECT * FROM (

  2  SELECT SNAP_ID,

  3         LOGICAL_READS_TOTAL,

  4         LOGICAL_READS_TOTAL -

  5         (LAG(LOGICAL_READS_TOTAL) OVER(ORDER BY SNAP_ID)) LOGICAL_READS,

  6         LOGICAL_READS_DELTA

  7    FROM DBA_HIST_SEG_STAT

  8   WHERE OBJ# = 3278293

  9     AND INSTANCE_NUMBER=1

 10   ORDER BY 1)

 11   WHERE ROWNUM

   SNAP_ID LOGICAL_READS_TOTAL LOGICAL_READS LOGICAL_READS_DELTA

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

     12315            43227600                             45168

     12316            43275936         48336               48336

     12321            43415056        139120               29056

     12323            43532160        117104               69536

     12325            43710256        178096              103760

     12326            43771904         61648               61648

     12327            43815680         43776               43776

     12328            43871648         55968               55968

     12332            44220256        348608               90016

     12333            44296544         76288               76288

在11g中,又為ASH增加了delta字段(V$ACTIVE_SESSION_HISTORY & DBA_HIST_ACTIVE_SESS_HISTORY)

有2組:

1.時間模型統計

  TM_DELTA_TIME         一次統計間隔

  TM_DELTA_CPU_TIME     在這個間隔内,CPU時間

  TM_DELTA_DB_TIME      在這個間隔内,DB時間

  因為ASH采樣的粒度是1秒,但是程序并不是在1s内都ACTIVE的。該統計的粒度是微秒(百萬分之一秒)

  TM_DELTA_TIME - TM_DELTA_DB_TIME = INACTIVE TIME

  TM_DELTA_DB_TIME - TM_DELTA_CPU_TIME = WAIT TIME

2.IO&網絡統計

  DELTA_TIME                         

  DELTA_READ_IO_REQUESTS             

  DELTA_WRITE_IO_REQUESTS            

  DELTA_READ_IO_BYTES                

  DELTA_WRITE_IO_BYTES               

  DELTA_INTERCONNECT_IO_BYTES        

  統計時間内,實體讀/寫/心跳流量高的SQL

        SELECT SQL_ID,

               SUM(DELTA_READ_IO_REQUESTS),

               SUM(DELTA_WRITE_IO_REQUESTS),

               SUM(DELTA_READ_IO_BYTES),

               SUM(DELTA_WRITE_IO_BYTES),

               SUM(DELTA_INTERCONNECT_IO_BYTES)

          FROM V$ACTIVE_SESSION_HISTORY

         GROUP BY SQL_ID

         ORDER BY 2 DESC