天天看點

AutoTrace執行結果說明

統計資訊
---------------------------------------------------------
        299  recursive calls
          0  db block gets
       2359  consistent gets
          0  physical reads
          0  redo size
        410  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          5  sorts (memory)
          0  sorts (disk)
          1  rows processed
           

這些資料就是這條SQL語句的執行狀态。下面分别說一下各個資料項的含義:

recursive calls

遞歸調用-執行SQL的時候的産生的遞歸調用的數量,這個參數和通路資料字典的次數有很大的關系。一般來說,這個參數值不會很大。

db block gets

DB塊取-在發生INSERT,DELETE,UPDATE,SELECT FOR UPDATE的時候,資料庫緩沖區中的資料庫塊的個數。在SELECT語句中一般為0。

db block gets + consistent gets = logical io (as opposed to physical io).

consistent gets

一緻性讀-除了SELECT FOR UPDATE的時候,從資料庫緩沖區中讀取的資料塊的個數

db block gets + consistent gets = logical io (as opposed to physical io)

physical reads

實體讀-physical reads = physical io (as opposed to logical io)

redo size

重做日志大小-執行SQL的過程中,産生的重做日志的大小

bytes sent via SQL*Net to client

通過sql*net發送給用戶端的位元組數

bytes received via SQL*Net from client

通過sql*net接受用戶端的位元組數

sql*net roundtrips to/from client

See how setting the arraysize affects SQL*Net roundtrips to/from client.

sorts(memory)

在記憶體中發生的排序

sorts(disk)

不能在記憶體中發生的排序,需要硬碟來協助

rows processed

結果的記錄數

用AutoTrace進行優化的注意事項

1. 可以通過設定timing來得到執行SQL所用的時間,但不能僅把這個時間來當作SQL執行效率的唯一量度。這個時間會包括進行AUTOTRACE的一些時間消耗,是以這個時間并不僅僅是SQL執行的時間。這個時間會與SQL執行時間有一定的誤差,而在SQL比較簡單的時候尤為明顯。

2. 判斷SQL效率高低應該通過執行SQL執行狀态裡面的邏輯讀的數量