Topic

RBO(Rule-Based Optimizer) vs CBO(Cost-Based Optimizer)

JackerLab 2025. 4. 20. 10:27
728x90
반응형

개요

RBO(Rule-Based Optimizer)와 CBO(Cost-Based Optimizer)는 데이터베이스 관리 시스템(DBMS)에서 SQL 실행 계획을 수립할 때 사용하는 두 가지 대표적인 옵티마이저 방식입니다. 쿼리 성능에 중대한 영향을 미치는 이 두 방식은 시대 흐름에 따라 CBO 중심으로 발전해 왔으며, DB 성능 튜닝 및 SQL 최적화에 있어 중요한 이해 포인트입니다. 이 글에서는 RBO와 CBO의 개념, 비교, 작동 원리, 활용 전략 등을 상세히 다룹니다.


1. 개념 및 정의

구분 설명
RBO (Rule-Based Optimizer) 미리 정해진 규칙(rule)에 따라 SQL 실행 계획을 결정하는 방식
CBO (Cost-Based Optimizer) 통계 정보와 비용(cost)을 기반으로 최적의 실행 계획을 선택하는 방식
  • RBO: 간단하고 예측 가능하지만, 상황 변화에 둔감
  • CBO: 복잡하지만 다양한 실행 경로를 비교 분석해 더 나은 성능 제공 가능

2. 주요 차이점 비교

항목 RBO CBO
기준 정해진 규칙 비용 기반 (통계, 리소스 소비량 등)
유연성 낮음 높음
실행 계획 수립 고정 우선순위 기반 다양한 후보 중 최적 선택
통계 활용 사용하지 않음 테이블/인덱스 통계 적극 활용
최신 DBMS 지원 거의 없음 대부분의 현대 DBMS에서 기본 적용

RBO는 구버전 DB에 남아있는 방식이며, CBO는 최신 쿼리 최적화의 핵심입니다.


3. 작동 방식

단계 RBO CBO
1 SQL 문 분석 SQL 문 분석
2 규칙 적용 (e.g., 인덱스 우선) 통계 수집 (e.g., cardinality, selectivity)
3 우선순위 기반 실행 계획 수립 후보 실행 계획 생성 및 비용 계산
4 고정된 우선순위 실행 가장 비용이 낮은 실행 계획 선택

CBO는 옵티마이저 통계의 품질에 따라 실행 계획의 품질도 달라집니다.


4. 실무 활용 전략

전략 설명 팁
옵티마이저 통계 갱신 CBO 성능 극대화 핵심 요소 주기적 분석 권장 (ANALYZE TABLE 등)
힌트 사용 RBO처럼 의도한 실행 경로 유도 가능 /*+ INDEX(table col) */ 등 활용
실행 계획 확인 EXPLAIN PLAN, AUTOTRACE로 확인 예상과 다를 경우 통계 또는 힌트 조정
DBMS 설정 확인 DB 옵티마이저 모드 확인 및 설정 변경 Oracle의 경우 OPTIMIZER_MODE 파라미터 활용

현대 환경에서는 대부분 CBO 기반이며, 성능 이슈는 통계/쿼리 튜닝이 중심입니다.


5. 활용 예시 및 적용 사례

분야 RBO 적용 예시 CBO 적용 예시
레거시 시스템 Oracle 8 이전 시스템에서 고정 실행 계획 사용 최신 Oracle, PostgreSQL, SQL Server 등에서 비용 기반 최적화
배치 처리 규칙 기반으로 반복 쿼리 처리 대용량 테이블의 조인 순서/인덱스 선택 최적화
분석 쿼리 고정된 인덱스 우선 전략 통계 기반으로 효율적인 GROUP BY/AGG 선택

CBO는 복잡한 쿼리 구조와 다양한 데이터 양에 효과적으로 대응할 수 있습니다.


6. 결론

RBO와 CBO는 데이터베이스 쿼리 성능을 결정짓는 핵심 옵티마이저 전략입니다. RBO는 간단하지만 유연성이 부족하고, CBO는 통계 기반으로 유동적인 실행 계획을 제시할 수 있습니다. 현재 대부분의 DBMS는 CBO를 중심으로 진화하고 있으며, DB 성능 최적화를 위해서는 CBO 통계 관리와 쿼리 튜닝 역량이 필수입니다.

728x90
반응형