[SQLP]CBO(비용기반 옵티마이저) vs RBO(규칙기반 옵티마이저)

·2025년 2월 1일

SQLP

목록 보기
16/20

😺 CBO(Cost-Based Optimizer)란?

CBO는 쿼리 실행 계획을 결정할 때, 쿼리 실행에 소요되는 비용을 평가하여 최적화된 실행 계획을 선택하는 방식이다. CBO는 통계 정보(EX.테이블크기, 인덱스 분포)와 비용 모델을 기반으로 최적화 한다.

  • 작동원리
    CBO는 쿼리 실행에 대한 여러 가능한 계획을 평가하고, 비용이 가장 적게 드는 방법을 선택한다. 이때 비용은 CPU시간, I/O 작업 등 다양한 요소를 기준으로 계산된다.

CBO는 실행계획을 고를 때,테이블의 통계 정보나 인덱스 사용 유무 등을 고려한다.

  • 특징
    동적이고 정확한 통계 정보를 기반으로 실행계획을 평가하므로,보다 효율적인 계획을 수립할 수 있다

비용 최적화에 집중되어 데이터 분포가 변해도 그에 맞춰 효율적인 실행계획을 찾아낼 수 있따

  • 예시
    하나의 테이블에 데이터가 많고 다른 테이블에 데이터가 적을경우 CBO는 조인순서를 최적화하여 데이터가 적은 테이블을 먼저 조회할 수 있도록 한다

  • 사용환경
    데이터 양이 많고 복잡한 환경에서 최적화 성능이 뒤어나며 유연성이좋다

😺 RBO(Rule-Based Optimizer)란?

RBO는 사전 정의된 규칙에 따라 쿼리의 실행 계획을 선택하는 방식이다. 기본적으로 우선순위 규칙에 따라 실행 계획을 결정한다.

  • 작동 원리
    쿼리를 실행할 때, 미리 설정된 규칙(인덱스 사용,테이블 스캔)을 기반으로 실행 계획을 생성한다.
    예를 들어 join순서나 인덱스 사용 여부 등을 규칙에 따라 선택한다.

  • 특징
    데이터 분포나 통계 정보를 고려하지 않고, 규칙을 고정적으로 따르기 때문에 동적인 환경에서는 비효율적으로 실행계획을 선택할 가능성이 크다.

  • 예시
    두개의 테이블이 조인 될 때, 항상 인덱스를 사용하는 방법이 규칙으로 설정되어있다면 통계와 관계없이 그 인덱스를 사용하려고 할 것이다.

  • 사용환경
    작은 시스템이나 통계 정보가 중요하지 않은 상황에서 유용하며 유연하지 않는다(규칙에 의한 제한된 최적화)

*참고 통계 정보는 데이터베이스 내 데이터의 분포, 크기, 인덱스 등 쿼리 최적화를 위해 사용되는 데이터에 관한 정보

profile
냐홍

0개의 댓글