왜 RBO가 사라졌나

RBO는 규칙만 보고, CBO는 실제로 얼마나 읽는지를 계산합니다.

users 100만 행
gender 인덱스 존재
'M' 약 50만 행 일치
같은 조회 조건
SELECT * FROM users
WHERE gender = 'M';
비교 축
고정 규칙 RBO 인덱스가 있으면 우선 사용 같은 미리 정한 우선순위
통계 기반 CBO 선택도와 I/O 비용을 보고 그 순간 더 싼 계획 선택
무엇을 보나 인덱스 존재 여부 데이터가 절반이나 걸려도 규칙은 그대로라서 분포 변화를 반영하지 못합니다. 선택도와 예상 읽기량 50%를 읽어야 한다면 인덱스보다 전체 스캔이 더 낫다고 계산할 수 있습니다.
선택된 계획 인덱스 스캔 고집 조건에 맞는 50만 건을 찾고, 각 행을 다시 따라가며 읽습니다. Full Table Scan 선택 가능 테이블을 순차적으로 훑으면서 필요한 행을 한 번에 읽습니다.
왜 문제가 되나 랜덤 I/O가 커짐 읽는 행 수가 많아질수록 인덱스의 장점이 사라지고, 오히려 비효율 계획이 됩니다. 데이터 상태에 맞게 적응 같은 SQL이어도 분포가 바뀌면 더 낮은 비용의 실행 계획으로 바꿀 수 있습니다.
학습 포인트: RBO의 한계는 "인덱스가 있느냐"만 보고 끝난다는 데 있습니다. 현대 DBMS가 CBO를 쓰는 이유는 데이터 분포가 달라지면 최적 계획도 달라져야 하기 때문입니다.