이 글은 오라클 기반의 글 입니다.

 1. RBO (Rule Based Optimizer)

머지 않아 소멸될 것이므로 간단한 개념만 소개한다.

RBO는 인덱스 구조나 비교연산자에 따라 순위를 부여하여 이것을 기준으로 최적의 경로를 결정

 

순위

① ROWID로 1 로우 액세스

② 클러스터 조인에 의한 1 로우 액세스

③ Unique HASH Cluster에 의한 1 로우 액세스

④ Unique INDEX에 의한 1 로우 액세스

⑤ CLUSTER 조인

⑥ Non Unique HASH Cluster Key

⑦ Non Unique Cluster Key

⑧ Non Unique 결합 인덱스

⑨ Non Unique한 컬럼 인덱스

⑩ 인덱스에 의한 범위 처리

⑪ 인덱스에 의한 전체범위처리

⑫ Sort Merge 조인

⑬ 인덱스 컬럼의 MIN, MAX 처리

⑭ 인덱스 컬럼의 ORDER BY

⑮ 전체테이블 스캔

 

RBO 의 단점

통계정보 무시

 

RBO 의 장점

옵티마이저의 판단이 매우 규칙적이고 분명하며 사용자가 정확히 예측할 수 있다.

전략적인 인덱스를 구성할 수만 있다면 이 규칙의 보편 타당성이 매우 높다.

 

 2. CBO(Cost Based Optimizer)

미리 작성해둔 다양한 통계정보를 참조한다. 통계정보에는 테이블의 로우 수와 블록 수, 블록 당 평균 로우 수, 로우의 평균길이, 컬럼별 상수값의 종류, 분포도, 컬럼 내 NULL 값의 수, 클러스터링 팩터, 인덱스의 깊이, 최대 최소값, 리프 블록 수, 가동 시스템의 I/O나 CPU/ 사용정보 등 많은 정보 보유

 

CBO 의 장점

- 최대의 장점은 현실을 감안한 판단을 할 수 있다(통계정보 기반)

- 통계정보의 관리를 통해 최적화를 제어 할 수 있다

- 옵티마이져를 깊이 이해하고 있지 않더라도 최소한의 성능이 보장된다

 

쓰다가 일이 생겨서... 추후 업데이트!

 

 

by 짱구를꼭말려 2014. 3. 5. 11:16