◆ 실행계획이란?
- 하나의 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 |