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

Chapter.03 Explain Plan




Introduction

Explain Plan은 SQL을 수행하기전 데이터를 어떻게 가져올 건지에 대한 실행계획을 의미하며 확인 하고자 할때 Explain Plan For명령어를 사용

Explain Plan 생성

Explain Plan을 생성하려면 @?/rdbms/admin/utlxplan.sql 을 실행

  • Oracle 10g 부터는 설치 시 기본적으로 sys.plan_table$를 제공하므로 별도의 Plan Table을 생성하지 않아도 됨
  • 참고로 ? 는 $ORACLE_HOME 디렉토리를 대체하는 기호

Explain Plan For 명령어를 수행을 통해 Plan_Table에 실행계획을 저장 할 수 있음

  • set statement_id ='query1' 는 생략 가능함
  • utlxpls 싱글 실행 계획
  • utlxplp 병렬 실행 계획
    SQL > Explain plan set statement_id ='query1' for 
    2     select * from emp where empno = 7900; 
    
    해석되었습니다.
    
    SQL > @?/rdbms/admin/utlxpls
    
    SQL > plan_table_output
     plan_table_output                                                                               
     -----------------------------------------------------------------------------  
    |ID | Operation                         | Name | Rows | Bytes | Cost (%CPU)  |
     ----------------------------------------------------------------------------- 
    |  0| SELECT STATEMENT                  |      |      |     32|     1     (0)|
    |  1|  TABLE ACCESS BY INDEX ROWID      |EMP   |     1|     32|     1     (0)|
    |* 2|   INDEX UNIQUE SCAN               |EMP_PK|     1|       |     0     (0)|
     -----------------------------------------------------------------------------
    
     -----------------------------------------------------------------------------
    Predicate Information (identified by operation id):
    -----------------------------------------------------------------------------
      2- access("EMPNO"=7900)
    


    Predicate Information 은 아래와 같이 세 가지 유형이 존재함

  • 인덱스 Access Predicate : 인덱스를 통해 스캔의 범위를 결정하는데 영향을 미치는 조건절
  • 인덱스 Filter Predicate : 인덱스를 통했으나 스캔의 범위를 결정하는 영향을 미치지 못하는 조건절
  • 테이블 Access Predicate : NL 조인을 제외한 조인에서 발생하며 결과 값의 범위를 결정하는데 영향을 미치는 조건절
  • 테이블 Filter Predicate : 테이블 스캔 후 최종 결과 집합 포함 여부를 결정하는데 영향을 미치는 조건절

Explain Plan For 명령어를 통해 실행계획을 별도로 저장해 둔다면 이를 활용해 안정적인 시스템 운영 및 성능관리에 활용 할 수 있음

  • 인덱스 구조 변경 시 사용하는 SQL을 뽑아 사전점검
  • 통계정보 변경 등으로 인한 이유로 갑자기 성능이 나빠질 경우 이전 실행계획을 확인하고 예전과 같은 방식으로 수행되도록 할 수 있음

참조문서

서적(오라클 성능 고도화 원리와해법 I) : http://book.daum.net/detail/book.do?bookid=KOR9788996246015

문서정보

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