by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

DBMS_XPLAN




함수가 정의되어 있는 위치 : ORA_HOME\RDBMS\ADMIN\dbmsxpln.sql

This package defines several table functions which can be used to display execution plans.
이 패키지(DBMS_XPLAN)는 실행계획을 표시하기 위하여 사용되는 몇몇 테이블 펑션이 정의된다.

DBMS_XPLAN 패키지를 사용하기 위하여 다음 객체에 대한 SELECT privileges이 필요하다
  - V$SESSION
  - V$SQL_PLAN
  - V$SQL (optional)
  - V$SQL_PLAN_STATISTICS_ALL (plan statitics를 보기위하여 필수)

DBMS_XPLAN에서 표현되는 컬럼

  1) Basics 항목 (Always Available)
    - Id :
         각 Operation 의 ID
         (* 가 달려있는 경우는 predicate 정보에 access 및 filter 에 관한정보가 나옴을 표시한것)
    - Operation  : (row source operation)
         각각 실행되는 JOB 을 나타냄
    - Name :
         Operation 이 엑세스하는 테이블 및 인덱스를 나타냄

  2) Query Optimizer Estimations(옵티마이져의 예상 row 수 및 bytes, cost , temp 사용량)
    - Rows (E-Rows)  :
         각 operation 이 끝났을 때 return되는 건수를 나타냄.
         이것은 예측 건수 이므로 실제 건수와는 다를 수 있음.
    - Bytes (E-Bytes)  :
         각 operation 이 return 한 byte 수.
         예상치 이므로 실제 받은 byte와는 다를 수 있음.
    - TempSpc  :
         각 operation. 이 temporary space 를 사용한 양(예상치임)
    - Cost (%CPU)  :
         각 operation 의 Cost. (예상치 임)
         괄호안의 내용은 CPU Cost 의 백분율임.(이 값은 Child Operation 의 Cost 를 합친 누적치)
    - Time  :
         예측 수행시간

  3) Partitioning (파티션을 엑세스 할경우만 나타남)
    - Pstart  :
         파티션을 엑세스 하는경우 시작파티션을 나타냄
         상수로 들어올때는 파티션 번호로 나타나며 변수로 들어올때는 KEY 로 나타남
    - Pstop  :
         마지막 파티션을 나타냄.
         따라서 patart, pstop 를 이용하면 access 한 파티션을 알수 있음.

  4) Parallel and Distributed Processing (Parallel Processsing 을 사용하거나 DB-LINK 를 사용하는경우)
    - Inst  : 
         DB-LINK 명(사용하는 경우만 나타남).
    - TQ  : 
         PARALLEL SQL 사용시 table queue 명을 나타냄
         TQ 는 PARALLEL SLAVE 간의 통신을 담당함.
    - IN-OUT  : 
         Parallel processing 시에 각각의 Operation 이 Serial 로 실행되는지 parallel 로 진행되는지를 나타냄.
    - PQ Distrib  : 
         Parallel processing 시에 producers 와 consumers 간의 데이터의 분배방식을 나타냄.

  5) Runtime Statistics (실제 수행시간밑 실제수행건수)
    - Starts  :
         각 operation 을 try 한 건수(예를 들어 nested loop join 이라면 인덱스를 여러 번 scan 함)
    - A-Rows  :
         각 operation 이 return 한 건수
    - A-Time  :
         실제 실행시간( 0.1초까지 나타남 (HH:MM:SS.FF))( 이값은 Child Operation 의 Cost 를 합친 누적치)
            
  6) I/O Statistics (I/O 관련하여 READ / WRITE 한 블록수)
    - Buffers  :
         각 Operation 이 메모리에서 읽은 block 수.
    - Reads  :
         각 Operation 이 disk 에서 읽은 block 수.
    - Writes  :
         각 Operation 이 disk 에 write한 block 수.

  7) Memory Utilization Statistics(hash 작업이나 sort 작업시 사용한 메모리 통계)
    - OMem  :
         optimal execution 에 필요한 메모리(예측치임).
    - 1Mem  :
         one-pass execution. 에 필요한 메모리(예측치임)
    - O/1/M  :
         각 operation 이 실행한 optimal/one-pass/multipass 횟수가 순서데로 표시됨.
    - Used-Mem  :
         마지막 실행시의 사용한 메모리
    - Used-Tmp  :
         마지막 실행시 메모리가 부족하여 temporary space 를 대신 사용할 때 나타남.
         보이는값에 1024 를 곱해야함.
         예를들어 32K 로 나타나면 32MB 를 의미함.
    - Max-Tmp  :
         메모리가 부족하여 temporary space 를 사용할 때 최대 temp 사용량임.
         USED-TMP 와 다른점은 마지막 수행시가 아니라 SQL을 여러 번 수행했을경우에
         항상 최대값만 보인다는 것이다. (보이는값에 1024 를 곱해야함, 32K 로 나타나면 32MB 를 의미)
(참조 http://scidb.tistory.com/trackback/46 )


---------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name     | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | Pstart| Pstop |    TQ  |IN-OUT| PQ Distrib | A-Rows |
---------------------------------------------------------------------------------------------------------------------------------------------------------------
|   1 |  PX COORDINATOR              |          |      1 |        |       |            |          |       |       |        |      |            |   9999 |
|   2 |   PX SEND QC (RANDOM)        | :TQ10001 |      0 |      1 |    29 |     7  (15)| 00:00:01 |       |       |  Q1,01 | P->S | QC (RAND)  |      0 |
|*  3 |    HASH JOIN SEMI            |          |      0 |      1 |    29 |     7  (15)| 00:00:01 |       |       |  Q1,01 | PCWP |            |      0 |
|   4 |     BUFFER SORT              |          |      0 |        |       |            |          |       |       |  Q1,01 | PCWC |            |      0 |
|   5 |      PX RECEIVE              |          |      0 |  10000 | 90000 |     4   (0)| 00:00:01 |       |       |  Q1,01 | PCWP |            |      0 |
|   6 |       PX SEND PARTITION (KEY)| :TQ10000 |      0 |  10000 | 90000 |     4   (0)| 00:00:01 |       |       |        | S->P | PART (KEY) |      0 |
|   7 |        TABLE ACCESS FULL     | T_PLAN   |      1 |  10000 | 90000 |     4   (0)| 00:00:01 |       |       |        |      |            |  10000 |
|   8 |     PX PARTITION RANGE ALL   |          |      0 |   9999 |   195K|     2   (0)| 00:00:01 |     1 |     3 |  Q1,01 | PCWC |            |      0 |
|   9 |      TABLE ACCESS FULL       | T_PLAN2  |      0 |   9999 |   195K|     2   (0)| 00:00:01 |     1 |     3 |  Q1,01 | PCWP |            |      0 |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
   A-Time   | Buffers |  OMem |  1Mem | Used-Mem |
---------------------------------------------------
00:00:02.08 |      55 |       |       |          |
00:00:00.01 |       0 |       |       |          |
00:00:00.01 |       0 |   921K|   921K| 1246K (0)|
00:00:00.01 |       0 | 93184 | 93184 |  104K (0)|
00:00:00.01 |       0 |       |       |          |
00:00:00.01 |       0 |       |       |          |
00:00:00.05 |      46 |       |       |          |
00:00:00.01 |       0 |       |       |          |
00:00:00.01 |       0 |       |       |          |
--------------------------------------------

문서에 대하여

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.