CBO는 쿼리 실행 계획을 결정할 때, 쿼리 실행에 소요되는 비용을 평가하여 최적화된 실행 계획을 선택하는 방식이다. CBO는 통계 정보(EX.테이블크기, 인덱스 분포)와 비용 모델을 기반으로 최적화 한다.
CBO는 실행계획을 고를 때,테이블의 통계 정보나 인덱스 사용 유무 등을 고려한다.
비용 최적화에 집중되어 데이터 분포가 변해도 그에 맞춰 효율적인 실행계획을 찾아낼 수 있따
예시
하나의 테이블에 데이터가 많고 다른 테이블에 데이터가 적을경우 CBO는 조인순서를 최적화하여 데이터가 적은 테이블을 먼저 조회할 수 있도록 한다
사용환경
데이터 양이 많고 복잡한 환경에서 최적화 성능이 뒤어나며 유연성이좋다
RBO는 사전 정의된 규칙에 따라 쿼리의 실행 계획을 선택하는 방식이다. 기본적으로 우선순위 규칙에 따라 실행 계획을 결정한다.
작동 원리
쿼리를 실행할 때, 미리 설정된 규칙(인덱스 사용,테이블 스캔)을 기반으로 실행 계획을 생성한다.
예를 들어 join순서나 인덱스 사용 여부 등을 규칙에 따라 선택한다.
특징
데이터 분포나 통계 정보를 고려하지 않고, 규칙을 고정적으로 따르기 때문에 동적인 환경에서는 비효율적으로 실행계획을 선택할 가능성이 크다.
예시
두개의 테이블이 조인 될 때, 항상 인덱스를 사용하는 방법이 규칙으로 설정되어있다면 통계와 관계없이 그 인덱스를 사용하려고 할 것이다.
사용환경
작은 시스템이나 통계 정보가 중요하지 않은 상황에서 유용하며 유연하지 않는다(규칙에 의한 제한된 최적화)
*참고 통계 정보는 데이터베이스 내 데이터의 분포, 크기, 인덱스 등 쿼리 최적화를 위해 사용되는 데이터에 관한 정보