◆ 실행계획이란?
  - 하나의 SQL문장을 실행하기 위해 오라클 서버는 여러 단계의 작업들을 수행
  - 이러한 단계들의 조합을 실행계획(Execution Plan)이라고 함.


◆ 옵티마이저란?
  - SQL의 실행계획을 수립하는 것.
    ▷ 목표 : 가장 효율적인 실행계획 찾기
  - 최적화에는 크게 두 가지의 접근 방법이 존재함. 
    ▷ RBO(Rule Based Optimization)
      - 미리 정해진 규칙에 따라 실행계획을 수립
    ▷ CBO(Cost Based Optimization)
      - 실행 비용(Cost)의 예측을 통한 지능적인 실행계획의 수립
  - 사람들이 말하길 RBO는 수동카메라, CBO는 자동카메라 라고 얘기를 함.


◆ 옵티마이저의 역할
  - 옵티마이저는 자동차의 네비게이션과 같은 역할임
  - 하나의 SQL을 수행하는 방법은 매우 다양하나 그 다양한 방법들 중 어떤 것을 이용하느냐에 따라 실행 효율에 커다란 차이가 존재함.
  - 옵티마이저는 활용가능한 실행계획을 모두 세운 후 그 중 최적화된 계획을 가지고 SQL문을 실행함


◆ SQL처리 구조와 옵티마이저
통계정보가 있으면 CBO, 없으면 RBO를 사용함(9i부터는 무조건 딕셔너리 안에 통계정보가 있기 때문에 default가 CBO임)


◆ 옵티마이저가 수행하는 연산
  1) 표현식 및 조건 평가
    - 상수를 포함하는 수식 또는 조건이 있을 경우 그에 대해 가능한 계산을 모두 수행.
  2) 효율적인 수행을 위하여 필요한 경우 주어진 SQL문장을 동등한 다른 SQL문장으로 변환
    - OR Expansion
    - Subquery Unnesting
    - View Merging
    - Predicate Pushing
    - Query Rewrite
  3) 최적화 접근방법 및 최적화 목표의 결정(사용자가 결정해주어야 함)
    - RBO? 또는 CBO?
    - (CBO를 선택한 경우) 전체 처리의 최적화? 아니면 가장 빠른 응답?
  4) 실행계획의 결정(옵티마이저가 계획을 세우는데 제일 중요하게 보는 것들)
    - 최적의 접근 경로(인덱스)
    - 최적의 조인 순서
    - 최적의 조인 방식

'오라클 > 튜닝' 카테고리의 다른 글

[튜닝] 옵티마이저 동작의 조정  (0) 2010.10.07
[튜닝] RBO(Rule-Based Optimization)와 CBO(Cost-Based Optimization)  (0) 2010.10.07
[튜닝] SQL Trace  (0) 2010.10.05
[튜닝] Autotrace  (0) 2010.10.04
[튜닝] 튜닝방법론  (0) 2010.10.04
Posted by 겨울섬
,