AutoTrace는 어디에 쓰오?

Auto Trace는 옵션에 따라서 퀴리수행결과, 실행계획, 실행통계를 선택적으로 출력할 수 있어서, SQL을 튜닝하는데 유용하다.
(쿼리수행결과, 실행통계는 실제로 수행해봐야 알수있는 결과고, 실행계획은 예측 결과)


SQL> set autotrace on
SQL> select *
  2  from emp where empno=7900;

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
      7900 JAMES      CLERK           7698 81/12/03        950                    30


Execution Plan
----------------------------------------------------------
Plan hash value: 2949544139

--------------------------------------------------------------------------------------
| Id  | Operation                   | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |        |     1 |    37 |     1   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    37 |     1   (0)| 00:00:01 |
|*  2 |   INDEX UNIQUE SCAN         | PK_EMP |     1 |       |     0   (0)| 00:00:01 |
--------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("EMPNO"=7900)


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
          2  consistent gets
          2  physical reads
          0  redo size
        835  bytes sent via SQL*Net to client
        400  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed


옵션에 따라 머가 다른데?

실제수행여부수행결과실행계획실행통계
set autotrace onOOOO
set autotrace on explain             OOO
set autotrace on statistics          OOO
set autotrace on traceonlyOOO
set autotrace on traceonly explainO
set autotrace on traceonly statisticsOO
  • 실행계획 확인만 하려면 plan_table만 있음되고, 실행통계까지도 볼라면 v_$sesstat, v_$statname, v_$mystat에 대한 읽기권한도 있어야함.
  • 수행결과, 실행통계를 출력하려면, 실제수행을 해야함. 실행계획만 보려면 실제 수행 안해도 됨.
  • statistics모드로 AutoTrace를 활성화시키면, 새로운 세션이 하나 열리면서 현재 세션의 통계정보를 대신 쿼리해서 보여줌.

문서에 대하여