토드에서 Explain Plan 보는 방법. 3 3 30,093

by 김정식 [Toad for Oracle] 토드 TOAD Explain Plan [2002.10.17 00:00:00]


토드에서 explain plan을 볼려면 아래의 스크립트를 실행 시킵니다.
C:\Program Files\Quest Software\TOAD\temps\toadprep.sql



toadprep.sql을 열어보면 toad유저를 생성할 때..
테이블스페이스를 지정하는데 데이타베이스에 존재하는 테이블 스페이스에 맞게 수정해야 합니다.


=============== 아래 부분은 제 오라클에 맞게 수정한 부분입니다. ===================

CREATE USER TOAD IDENTIFIED BY TOAD
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON USERS
QUOTA 0K ON SYSTEM;

============================================================================


toadprep.sql스크립트가 에러없이 수행이 되면 오라클에 toad라는 유저가 생성되고...

toad_plan_table, toad_plan_sql 테이블이 생성이 됩니다.

또한 시퀀스, 시노님, 권한부여, 함수가 에러없이 생성이 되면 설치가 다 끝난겁니다.


실행계획을 보는 방법은 우선 SQL을 실행할 유저로 토드를 접속합니다..


그리고 나서 sql 을 실행하고 나면 토드 아래에  explain plan과 autotrace를 보면 됩니다.


아래의 그림은 제 피시에서 실행한 예 입니다..아래의 explain plan이 보이지 ?을 경우에는 토드 메뉴에서 view->explain plan을 선택하거나 아래 그림 맨 오른쪽 세번째 있는 엠브런스차 아이콘을 클릭하면 됩니다..



실행 계획을 보는 방법은 Operation 컬럼에 나온 내용과 아래의 표를 참고해서  보시면 됩니다.

그리고 Explain Plan 오른쪽에   Auto Trace를 보면 Trace정보가 나옵니다..


AutoTrace관련 몇 가지를 설명하면 아래와 같습니다.

  • db block gets : current gets에 대한 논리적인 IO횟수(in memory)
  • consistent gets : read-consistent gets에 대한 논리적인 IO횟수(in memory)
  • physical reads : Disk에서 읽은 블럭수
  • redo size : (DML)문에 의해 생성된 redo의 양
  • sorts(memory) : memory에서 수행된 sort횟수
  • sorts(disk) : Temporary 영역에서 sort된 횟수


    ☞ OPERATION의 종류와 OPTIONS에 대한 설명

    OPERATION(기능)

    OPTIONS(옵션)

    설      명

    AGGREGATE

    GROUP BY

    그룹함수를 사용하여 하나의 로우가 추출되도록 하는 처리(버전 7에서만 표시됨)

    AND-EQUAL


    인덱스 머지를 이용하는 경우

    CONNECT BY


    CONNECT BY를 사용하여 트리 구조로 전개

    CONCATENATION


    단위 액세스에서 추출한 로우들의 합집합을 생성

    COUNTING


    테이블의 로우스를 센다

    FILTER


    선택된 로우에 대해서 다른 집합에 대응되는 로우가 있다면 제거하는 작업

    FIRST ROW


    조회 로우 중에 첫번째 로우만 추출한다.

    FOR UPDATE


    선택된 로우에 LOCK을 지정한다.

    INDEX

    UINQUE

    RANGE SCAN

    RANGE SCAN
    DESCENDING

    UNIQUE인덱스를 사용한다. (단 한개의 로우 추출)

    NON-UNIQUE한 인덱스를 사용한다.(한 개 이상의 로우)

    RANGE SCAN하고 동일하지만 역순으로 로우를
    추출한다.

    INTERSECTION


    교집합의 로우를 추출한다.

    MERGE JOIN




    OUTER

    먼저 자신이ㅡ 조건만으로 액세스한 후 각각을 SORT하여
    MERGE해 가는 조인

    위와 동일한 방법이지만  outer join을 사용한다.

    MINUS


    MINUS 함수를 사용한다.

    NESTED LOOPS




    OUTER

    먼저 어떤 드라이빙 테이블의 로우를 액세스한 후 그 결과를
    이용해 다른 테이블을 연결하는 조인

    위와 동일하지만 outer join을 사용한다.

    PROJECTION


    내부적인 처리의 일종

    REMOTE


    다른 분산 데이터베이스에 있는 오브젝트를 추출하기 위해
    DATABASE LINK를 사용하는 경우

    SEQUENCE


    시퀀스를 액세스 한다.

    SORT

    UNIQUE

    GROUP BY

    JOIN

    ORDER BY

    같은 로우를 제거하기 위한 SORT

    액세스 결과를 GROUP BY 하기 위한 SORT

    MERGE JOIN을 하기 위한 SORT

    ORDER BY를 위한 SORT

    TABLE ACCESS

    FULL

    CLUSTER

    HASH

    BY ROWID

    전체 테이블을 스캔한다.

    CLUSTER를 액세스 한다.

    키값에 대한 해쉬 알고리즘을 사용(버전 7에서만)

     ROWID를 이용하여 테이블을 추출한다.

    UNION


    두 집합의 합집합을 구한다.(중복없음)
    항상 전체 범위 처리를 한다.

    UNION ALL


    두 집합의 합집합을 구한다.(중복가능)
    UNION과는 다르게 부분범위 처리를 한다.

    VIEW


    어떤 처리에 의해 생성되는 가상의 집합에서 추출한다.(주로 서브쿼리에 의해 수행된 결과)


  • by 쌍코피 [2002.10.21 00:00:00]
    설치 끝내고 나서 실행했는데여.. 위와같은 실행계획이 안나오덴데요...

    by 쌍코피 [2002.10.21 00:00:00]
    어떻게 해야하는건쥐 좀더 자세히 설명해 주세요....??

    by 짱이^^ [2008.06.05 11:51:32]
    웅.. 이해력이 딸리네요.. ^^;;;;
    댓글등록
    SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
    로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입