본문 바로가기

DataBase/Oracle

Optimizer :

Optimizer :

 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라고

    생각하믄 된다..   

'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