Oracle Tuning 강좌
ALLSTATS Format 0 1 99,999+

by 강정식 DBMS_XPLAN DBMS_XPLAN.DISPLAY_CURSOR [2010.07.29]


ALLSTATS Format

  이 Format은 Starts, A-Rows, Buffer의 출력값을 누적하여 보여준다.

구분 항목 설명
PLAN 정보 ID 각 Operation ID
Operation 로우 단위의 액세스 정보
Name 액세스 하는 Object의 정보
Starts 각 Operation을 수행한 회수(만약 NL Join이라면 Looping한 회수)
E-Rows 각 Operation에서 예측한 로우수
A-Rows 각 Operation에서 실제 액세스한 로우수
A-Time 각 Operation에서 실제 수행된 시간(단위 : 초)
Buffer 각 Operation에서 실제 읽은 Logical Block
Read 각 Operation에서 실제 읽은 Physical Block
추가 정보 Predicate Information SQL에서 WHERE절에 사용되는 조건들이 각 Operation에 적용되는 정보

ALLSTATS Format 예제

 
SQL> SET SERVEROUTPUT OFF;
SQL> SET LINESIZE 2000;
SQL> ALTER SESSION SET STATISTICS_LEVEL = ALL;

SQL> SELECT /*+ USE_NL(E D) */ *
     FROM EMP E, DEPT D
     WHERE E.DEPTNO = D.DEPTNO
       AND D.DEPTNO IN (10, 20, 30);

SQL> SELECT * 
     FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, 'ALLSTATS'));

-------------------------------------------------------------------------------------------------------------
| Id  | Operation                      | Name    | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |
-------------------------------------------------------------------------------------------------------------
|   1 |  TABLE ACCESS BY INDEX ROWID   | EMP     |      1 |    900K|    999 |00:00:00.26 |     156 |     10 |
|   2 |   NESTED LOOPS                 |         |      1 |   2701K|   1003 |00:00:07.22 |      86 |      6 |
|   3 |    INLIST ITERATOR             |         |      1 |        |      3 |00:00:00.03 |       9 |      2 |
|   4 |     TABLE ACCESS BY INDEX ROWID| DEPT    |      3 |      3 |      3 |00:00:00.03 |       9 |      2 |
|*  5 |      INDEX RANGE SCAN          | DEPT_U1 |      3 |      3 |      3 |00:00:00.02 |       6 |      1 |
|*  6 |    INDEX RANGE SCAN            | EMP_N1  |      3 |    906K|    999 |00:00:00.21 |      77 |      4 |
-------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------
   5 - access(("D"."DEPTNO"=10 OR "D"."DEPTNO"=20 OR "D"."DEPTNO"=30))                                       
   6 - access("E"."DEPTNO"="D"."DEPTNO")                                                                     
       filter(("E"."DEPTNO"=10 OR "E"."DEPTNO"=20 OR "E"."DEPTNO"=30))
    

 
-- 1회 수행
-------------------------------------------------------------------------------------------------------------
| Id  | Operation                      | Name    | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |
-------------------------------------------------------------------------------------------------------------
|   1 |  TABLE ACCESS BY INDEX ROWID   | EMP     |      1 |    900K|    999 |00:00:00.26 |     156 |     10 |
|   2 |   NESTED LOOPS                 |         |      1 |   2701K|   1003 |00:00:07.22 |      86 |      6 |
|   3 |    INLIST ITERATOR             |         |      1 |        |      3 |00:00:00.03 |       9 |      2 |
|   4 |     TABLE ACCESS BY INDEX ROWID| DEPT    |      3 |      3 |      3 |00:00:00.03 |       9 |      2 |
|*  5 |      INDEX RANGE SCAN          | DEPT_U1 |      3 |      3 |      3 |00:00:00.02 |       6 |      1 |
|*  6 |    INDEX RANGE SCAN            | EMP_N1  |      3 |    906K|    999 |00:00:00.21 |      77 |      4 |
-------------------------------------------------------------------------------------------------------------

-- 2회 수행
-- Starts, A-Rows, Buffers의 누적정보를 보여준다.
-------------------------------------------------------------------------------------------------------------
| Id  | Operation                      | Name    | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |
-------------------------------------------------------------------------------------------------------------
|   1 |  TABLE ACCESS BY INDEX ROWID   | EMP     |      2 |    900K|   1998 |00:00:00.28 |     312 |     10 |
|   2 |   NESTED LOOPS                 |         |      2 |   2701K|   2006 |00:00:07.25 |     172 |      6 |
|   3 |    INLIST ITERATOR             |         |      2 |        |      6 |00:00:00.03 |      18 |      2 |
|   4 |     TABLE ACCESS BY INDEX ROWID| DEPT    |      6 |      3 |      6 |00:00:00.03 |      18 |      2 |
|*  5 |      INDEX RANGE SCAN          | DEPT_U1 |      6 |      3 |      6 |00:00:00.02 |      12 |      1 |
|*  6 |    INDEX RANGE SCAN            | EMP_N1  |      6 |    906K|   1998 |00:00:00.22 |     154 |      4 |
-------------------------------------------------------------------------------------------------------------
    

- 강좌 URL : http://www.gurubee.net/lecture/2139

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 참된신자 [2014.08.14 09:11:27]

감사합니다 :)

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입