高階SQL優化(三) 常用優化工具 ——《12年資深DBA教你Oracle開發與優化——效能優化部分》
阿新 • • 發佈:2019-01-26
1.AUTOTRACE簡介
AUTOTRACE是SQL*Plus的一項功能,其作用是自動跟蹤SQL語句,為SQL 語句生成一個 執行計劃並且提供與 該語句的處理有關的統計資訊。
SQL*Plus AUTOTRACE 可以用來替代 SQL Trace 使用,AUTOTRACE 的好處是不必設定跟蹤檔案的格式,並且它將自動為 SQL 語句顯示執行計劃。AUTOTRACE與執行計劃的區別是AUTOTRACE 分析和執行語句;而EXPLAIN PLAN僅分析語句,而不負責執行語句。
AUTOTRACE在SQL*PLUS下執行,使用AUTOTRACE不會產生跟蹤檔案。
2.配置AUTOTRACE
(1).確保表PLAN_TABLE已經建立,如果沒有則如下建立:
(2).確保角色plustrace已經建立,如果沒有則如下建立:
3.使用AUTOTRACE
4. AUTOTRACE設定命令
參見每個設定的現場舉例
5. AUTOTRACE STATISTICS含義
序號 | 命令 | 解釋 |
1 | SET AUTOTRACE OFF | 此為預設值,即關閉Autotrace |
2 | SET AUTOTRACE ON | 產生結果集和解釋計劃並列出統計 |
3 | SET AUTOTRACE ON EXPLAIN | 顯示結果集和解釋計劃不顯示統計 |
4 | SETAUTOTRACE TRACEONLY | 顯示解釋計劃和統計,儘管執行該語句但將看不到結果集 |
5 | SET AUTOTRACE TRACEONLY STATISTICS | 只顯示統計 |
序號 | 列名 | 解釋 |
1 | recursive call | 遞迴呼叫SQL的個數;Oracle在執行這個SQL的時候,有時候會生成很多額外的SQL語句,這個就稱為遞迴呼叫 |
2 | db block gets | 從buffer cache中讀取的block的數量 |
3 | consistent gets | 從buffer cache中讀取的undo資料的block的數量 |
4 | physical reads | 從磁碟讀取的block的數量 |
5 | redo size | DML生成的redo的大小 |
6 | sorts (memory) | 在記憶體執行的排序量 |
7 | sorts (disk) | 在磁碟上執行的排序量,如果memory空間使用不足,是會使用disk的空間的 |
8 | bytes sent via SQL*Net to client | 利用sql*net傳入到client的位元組數; |
9 | bytes received via SQL*Net from client | 利用sql*net傳出client的位元組數; |