728x90
반응형

출처 ⓜⓤⓢⓔ①④⑦② | 뮤즈
원문 http://blog.naver.com/muse1472/120009092787

Toad에서 Explain Plan을 이용하기(쿼리 튜닝하기)

 

많은 개발자들이 DB를 이용하면서 Query를 작성하고 또한 Query를 튜닝해야 한다는 것을 알지만 어떻게 튜닝해야 하는지는 잘 모르고 있는 것 같다. Toad를 이용하면 이러한 문제를 조금이나마 쉽게 접근할 수 있기 때문에 여기서 Toad를 이용한 튜닝 방법을 잠시 설명하기로 하자. Toad의 Sql Window를 열면 다음과 같은 창이 나타난다. 이곳의 Tab 을 보면 Explain Plan Tab이 존재한다. 이곳에서 실행한 Query의 Execution Plan을 볼수 있다.

Oracle의 Optimizer는 가장 효율적인 실행계획을 찾기위해 크게 2가지의 접근 방법을 가지고 있다.

  • Rule-Based Optimization(RBO)
    • 미리 정해진 규칙에 의한 실행 계획 수립
      • 연산자 우선순위
      • 접근 경로의 우선 순위
      • SQL 문장의 Syntax 규칙(상식에 의거하지만 융통성이 없음)
    • 데이터에 대한 통계 내지 실제 SQL을 수행할 경우에 소요될 비용한 대한 고려를 하지 않음
      • 예) 인덱스가 있다면 무조건 사용 (테이블의 크기, 인텍스의 효율등 무시)
    • Oracle 버젼 6이하와의 역 호환성을 위해 지원

     

  • Cost-Based Optimization(CBO)
    • 실행 비용( Cost)의 예측을 통한 지능적인 실행계획의 수립(Oracle 10 부터는 CBO만 제공된다고 하더군요)
    • 데이타에 대한 각종 통계 사용
    • 실제 SQL을 수행할 때 소요될 비용을 예측하고 그 값을 기준으로 실행 계획 결정
      (보다 현실적이고 지능적인 판단을 내림)
      • I/O 횟수
      • CPU 사용량
      • 메모리 사용량
      • 네트워크 전송량
    • Oracle7에 처음 도입
      • 지속적으로 성능 향상
      • 일반적으로 RBO 보다 우수

Toad에서 Execution Plan을 사용하기 위해서는 먼저 준비과정이 필요하다.

  1. USER_DATA, TEMPORARY_DATA의 2개의 Table Space를 만들어야 한다. 이때 TEMPORARY_DATA는 임시 Table로 생성하여야 한다. 크기는 별 상관 없는 것 같다. (본인은 10MB의 크기로 각각 생성하였다.)
  2. Toad를 실행하고 System 권한으로 SYSDBA로 해당 시스템에 Login한다.
  3. Toad의 설치 Directory -> temps -> toadprep.sql를 불어 들인다.
  4. DEFINE TMP_TSPACE=TEMPORARY 이곳의 TEMPORARY를 TEMPORARY_DATA로 수정한다.
  5. 이 파일을 실행한다. 실행시 오류가 발생하는데 이는 Drop에서 발생하는 것이므로 Continue를 선택해서 실행을 계속진행하면 된다.

이것으로 모든 것이 완료되었다. 이제 여러분도 다음과 같은 결과를 보실 수 있을 것이다.

결과의 내용중 Cost의 항목이 나오는 것은 CBO로실행된 것이고 없는 것은 RBO로 실행된 것이라 이해하면 된다.

주) RBO와 CBO의 설명은 Oracle Developer Conference에서 제공된 내용을 참조 하였음.

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,