SQL에 대한 최적의 execution plan을 수립하는 Server process
* Rule-Based Optimizer
하나의 SQL에 대한 여러 개의 execution plan 가운데 가장 높은 순위의 execution plan을 항상
사용한다.(Rank Rule 사용) - 그냥 무조건 인덱스를 사용하려고 한다라고 생각하믄 된다.
- 경험적으로 순위가 매겨진 오퍼레이션에 기초한 실행계획을 선택한다.
- SQL문을 실행하기 위한 방법이 하나 이상 있다면, 규칙기준 접근 방식은 순위가 높은
(적은 숫자의) 오퍼레이션을 이용 한다.
- 순위가 높은 오퍼레이션은 순위가 낮은 오퍼레이션보다 더 빨리 실행된다.
- 수립될 실행계획이 예측 가능하기 때문에 사용자가 원하는 처리 경로로 유도하기 쉽다.
* Cost-Based Optimizer
하나의 SQL에 대한 여러 개의 execution plan 가운데 가장 cost가 적은 execution plan을 선택
한다.
- 목적은 대상 Row를 처리하는데 필요한 자원 사용을 최소화
--> 궁극적으로 데이터를 빨리 처리하는데 목적
- 비용산정 요소로는 각종 통계정보, SQL형태, hint, optimizer mode, 연산자, index, cluster,
DBMS 버전, CPU 용량, 메모리 용량, Disk I/O, LINK N/W 비용 등 매우 다양하다.
- 비용산정 요소 중에서 Data Dictionary 내의 테이블/클러스터 /인덱스에 대한 통계와 데이터
분포를 중요시 한다.
- CBO의 성능을 최적의 상태로 유지시키기 위해서는 ANALYZE OBJECT 작업을 정기적으로
해주는 것이 가장 중요하다.
※ 9i까지는 둘다 사용한다고 한다. 10 버젼부터는 CBO만 사용한다고 하는데...
※ 오라클은 기본적으로 둘중에서 선택적으로 사용한다고 하는데 데이터 베이스 구축 후
통계정보를 생성(ANALYZE..)하지 않는 경우가 많기 때문에 기본적으로 RBO라고
생각하믄 된다..
[출처] [오라클]RBO란, CBO란...|작성자 찬돌팍
'DataBase > Oracle' 카테고리의 다른 글
오라클 SID와 Service Name의 차이 (0) | 2009.01.07 |
---|---|
Schema - 스키마란..?? (0) | 2009.01.07 |
유용한 오라클 스크립트 (0) | 2008.11.21 |
ORACLE TABLE SPACE 사용량 확인쿼리 (0) | 2008.11.21 |
테이블전체사용량알아보기 (0) | 2008.11.21 |