본문 바로가기
Oracle/튜닝

RBO(Rule-Based Optimization)와 CBO(Cost-Based Optimization)

by 취미툰 2020. 10. 13.
반응형

SQL 처리시 Optimizer 사용 여부 트리

 

RBO

Oracle 6 버전 이하에서 시작된 프로그램입니다. 10g에서는 존재하지만 지원되지 않는 기능이며 11gR2 이후로는 사라진 기능입니다.

 

RBO는 미리 정해진 규칙에 의해 실행계획을 결정하게 됩니다.

아래는 미리 정해진 규칙이며 해당 순위에 따라 SQL을 수행하게 됩니다.

무조건 정해진 규칙을 따르고, 인덱스가 있으면 무조건 인덱스를 타기 때문에 인덱스 효율이 없는 경우도 있습니다.

 

 순위  접근경로
 1  Single row by ROWID
 2  Single row by cluster join
 3  Single row by hash cluster key with unique or primary key
 4  Single row by unique or primary key
 5  Cluster join
 6  Hash cluster key
 7  Indexed cluster key
 8  Composite index
 9  Single-column index
 10  Bounded range search on indexed columns
 11  Unbounded range search on indexed columns
 12  Sort-merge join
 13  MAX or MIN of indexed column
 14  ORDER BY on indexed column
 15  Full table scan

 

 

CBO

데이터에 대한 각종 통계를 사용하여 SQL을 수행하게 되고, 실제 SQL을 수행할 때 소요될 비용을 예측하고 그 값을 기준으로 실행계획을 결정하게됩니다.

 

무조건 정해진 규칙에 판단하기보다 통계에 근거하기 때문에 RBO보다 최적화된 판단이 나올 확률이 높습니다.

 

출처: https://sksstar.tistory.com/134 [겨울섬의 블로그]

 

 

튜닝을 할때 기본적인 옵티마이저의 종류와 작동원리에 대해서 간단히 설명을 정리해보았습니다. 

반응형

댓글