統計資訊
---------------------------------------------------------
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執行狀态裡面的邏輯讀的數量