핵심 인사이트 (3줄 요약)

  1. 본질: 규칙 기반 옵티마이저(RBO, Rule-Based Optimizer)는 SQL 쿼리를 실행할 길을 정할 때, 데이터의 양이나 인덱스 크기 따위는 일절 무시하고 오직 사전에 하드코딩된 '15개의 불변하는 우선순위 계급표(Rule Rank)'에 100% 맹목적으로 순종하여 무지성 경로(Execution Plan)를 확정하는 구형 쇳덩이 두뇌다.
  2. 가치: 1등 [ROWID 직빵 타격] ➔ 2등 [클러스터드 인덱스] ... ➔ 8등 [복합 인덱스] ... ➔ 15등(꼴찌) [풀 테이블 스캔]. 이 미치도록 단순한 서열 룰 덕분에, 과거 데이터 양이 적었던 90년대 시절엔 개발자가 쿼리(SQL)를 짜는 순간 자기 머릿속에서 "아, DB가 8등 인덱스 타겠네 ㅋ" 하고 플랜 결과를 1초 만에 100% 완벽 예측 통제할 수 있는 명확한 직관성을 제공했다.
  3. 융합: 하지만 전체 데이터의 90%를 다 퍼올리는 거대한 대용량 통계 쿼리 앞에서도 "어? 인덱스 껍데기 있네? 풀스캔(15등)보다 인덱스(8등)가 서열 높으니까 무조건 인덱스 타라 돌격!!" 라며 억지로 타다가 랜덤 I/O 1,000만 번 바늘 점프를 치고 서버가 불타 죽는(Timeout 붕괴) 극악의 한계를 노출하며, 결국 똑똑한 자본주의 통계 계산기 CBO(비용 기반)에게 왕좌를 뺏기고 오라클 10g부터 공식 역사에서 완벽히 퇴출(Deprecated) 척살되었다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: 옵티마이저는 SQL(SELECT) 텍스트를 건네받아 가장 빠른 디스크 탐색 경로(Plan)를 찾아주는 DB 내비게이션이다. 초창기 내비게이션 모델인 **RBO(Rule-Based Optimizer)**는 교통 상황(실제 통계 데이터)은 보지 않고 오직 '이정표의 종류(인덱스 존재 여부, 조인 문법)'만 보고 미리 짜인 15단계의 엄격한 서열(Rank) 룰북에 따라 무식하게 무조건 서열이 높은 길을 선택하는 강압적 관료제(Bureaucracy) 통치 기계다.

  • 필요성: 1990년대 오라클 7 시절. 당시 컴퓨터는 똥컴(CPU, RAM 부족)이라 옵티마이저가 쿼리가 들어올 때마다 "인덱스 타면 비용이 150만, 풀스캔은 120만 블라블라..." 엑셀 계산기(CBO 짓거리)를 실시간으로 피 터지게 두들기면 오히려 계산하느라 렉 걸려 서버가 먼저 뻗었다(오버헤드 폭파). 아키텍트(오라클 개발자)의 극단적 타협 튜닝: "야! 복잡하게 수학 계산(비용 Cost 연산) 때리지 마 뇌 터져!! 그냥 심플하게 가자! 내가 DB 커널 심장에 [15단계 우선순위 룰 법전]을 쾅 박아줄게! 1. 무조건 ROWID 나오면 1등 직빵 길! 2. PK(기본키) 인덱스 보이면 2등 쓩! 15등. 인덱스 아무것도 없으면 그냥 꼴찌 병신 [풀스캔(Full Scan)] 싹 다 읽어! 뇌 비우고 무.조.건. 이 법전 순위 높은 대로만 기계적으로 쏴버려 쾅!!" 복잡한 실시간 비용(Cost) 연산 부하를 0%로 완전히 증발시키고, 오직 코드 문법(Syntax)과 껍데기 오브젝트(Index) 뼈대만 보고 0.001초 만에 직관적으로 플랜을 뱉어내는 극도의 초경량 가성비(Light-weight) 뇌가 탄생했다.

  • 💡 비유: **CBO(최신 비용 기반)**는 도로 상황을 실시간 반영하는 **'T맵 인공지능 내비게이션'**입니다. "어? 지금 올림픽대로(고속도로 1등) 차 꽉 막히네 통계 떴네? 야! 고속도로 찢어버리고, 당장 우회해서 좁은 국도(풀스캔)로 꺾어라 그게 시간(Cost) 더 싸게 먹힘 쓩!" **RBO(과거 규칙 기반)**는 아빠가 그려준 **'종이 낡은 지도'**입니다. 아빠가 "고속도로(인덱스)가 무조건 골목길(풀스캔)보다 서열 높으니까 무슨 일 있어도 고속도로만 타!" 라고 규칙을 박아놨습니다. 고속도로에 차가 1만 대 막혀서 차가 멈춰 폭사하기 일보 직전인데도, 종이 지도는 융통성 0%라 죽어라 "앞으로 직진! 고속도로(인덱스) 타라!" 만 앵무새처럼 꽥꽥 외치는 무식한 고집불통 내비게이션입니다.

  • 등장 배경:

    1. HW(하드웨어) 연산 자원의 빈곤: 쿼리를 쏠 때마다 통계 정보를 가져와 곱셈/나눗셈 수학 연산(Cost 계산)을 때리는 것 자체가 DB 커널에 엄청난 사치(오버헤드)였던 시절, 연산 과정을 if-else 서열 룰 15개로 압축 퉁쳐버린 가장 자본 효율적(Cheap) 뇌 구조였다.
    2. 개발자의 통제권 강박증: 옛날 시니어 코더들은 DB(옵티마이저)가 지 혼자 맘대로 변덕(Plan 널뛰기) 부리는 걸 극혐했다. RBO를 쓰면 내가 SQL 텍스트를 예쁘게 조작(WHERE 1=1 AND...)하는 순간 내 머릿속 예상 플랜과 오라클의 플랜이 100% 1:1 완벽 일치(Predictability) 동기화되는 짜릿한 쾌감을 사랑했다.
  ┌─────────────────────────────────────────────────────────────┐
  │         RBO의 심장: 융통성 0% 무지성 15단계 우선순위 룰(Rule Rank) 헌법 도해 │
  ├─────────────────────────────────────────────────────────────┤
  │                                                             │
  │ 📜 [ RBO 대법관의 절대 법전 (낮은 숫자일수록 우주 신분 높음 👑) ]  │
  │                                                             │
  │  👑 Rank 1 : Single row by ROWID (주소 다이렉트 직통 미사일 꽂기)│
  │  🥇 Rank 2 : Single row by Cluster Join (클러스터 조인 1방 컷)  │
  │  🥈 Rank 4 : Single row by UNIQUE/PK Index (기본키 1명 핀셋 컷) │
  │                                ...                           │
  │  🥉 Rank 8 : Composite Index (결합 인덱스 스키 타기)            │
  │  🏅 Rank 9 : Single Column Index (단일 일반 인덱스 1가닥 타기)  │
  │  🗑️ Rank 15 (꼴찌): Full Table Scan (인덱스 없어서 창고 1자로 다 밀기)│
  │                                                             │
  │        ======= [ 🚨 대재앙 파국 발동: 100만 건 긁어오기 쿼리 💥 ] ========│
  │                                                             │
  │ 👨‍💻 [ 코더 쿼리 쾅! ] SELECT * FROM 주문 WHERE 주문일자 > '2020년'; │
  │    (※ 주의 팩트: 테이블 데이터가 총 1,000만 건이고, 저 조건에 맞는 건 990만 건임!)│
  │                                                             │
  │ 🤖 [ 바보 깡통 RBO 뇌 가동 발동! 위잉~ ]                        │
  │   - RBO 왈: "어? 쿼리에 `주문일자` 조건 있네? 근데 저 컬럼에 [일반 인덱스(Rank 9)] │
  │     껍데기가 딱 박혀 있잖아?! 오케이!! 인덱스는 Rank 9등 귀족이고, 풀스캔은 15등 │
  │     천민 새끼지?! 야! 당장 천민 풀스캔 버리고 **무조건 9등 귀족 인덱스 타라 돌격 쓩!!**"│
  │                                                             │
  │ 💥 [ 결말 (서버 OOM 타임아웃 뒤짐 💀) ]                          │
  │   - 990만 건(전체의 99%)을 읽는데 무식하게 인덱스 나뭇잎(Leaf)을 990만 번 튕기고 │
  │     디스크 바늘을 990만 번 쾅쾅 찍어대며(Random I/O 지옥) 10시간 동안 뻗어 파산.   │
  │                                                             │
  │ 🌟 아키텍트 극딜: RBO는 1,000만 건 데이터 중 990만 건을 꺼내오든 1건을 꺼내오든 │
  │   '양(Stats)'에는 1바이트도 관심 없는 미친놈이다. 오직 테이블 껍데기에 [인덱스]가   │
  │   달려있냐 안 달려있냐(Syntax/Object 존재 유무) 그 '계급장' 딱 하나만 보고 평생  │
  │   직진하다 낭떠러지로 추락해 멸망한 비참한 꼰대 아키텍처다.                    │
└─────────────────────────────────────────────────────────────┘

[다이어그램 해설] "옛날엔 RBO로 쿼리 다 짰다는데 왜 버려졌어요?" 라는 주니어의 질문을 한 방에 으깨버리는 CBO 탄생의 당위성 맵이다. RBO 15개 랭킹의 본질은 "무조건 넓게 퍼진(풀스캔) 천민 놈들 버리고, 뾰족하고 좁은 놈(인덱스 귀족)부터 타라!"는 단순 룰이다. 1만 건 조회용 소형 OLTP 환경에선 이 룰이 기가 막히게 적중률 100% 꿀을 빨았다. 하지만 대용량 데이터웨어하우스(DW) 배치가 터지는 2000년대 후반. 테이블 전체 1,000만 건의 50%를 쓸어 담는 대형 쿼리를 쳤다. 50%를 담을 땐 무식하게 일자로 1방에 미는 게(Full Scan 15등) 디스크 I/O 랜덤 폭격을 막아주는(손익분기점 교차) 생존의 길이다. 하지만 RBO는 이 통계 수학을 할 뇌세포가 없다. "어? 인덱스 9등이 풀스캔 15등보다 랭크 높으니까 닥치고 인덱스 타 쾅!!" 이 멍청한 서열 맹신 똥고집 1방에 디스크 헤드가 500만 번 미친 듯이 춤을 추며(Random I/O Thrashing) 서버가 물리적으로 타버렸고, 결국 오라클 10g에서 CBO(비용 수학 계산기)에게 왕좌를 넘기고 RBO는 영구 박제(Deprecated) 관짝 척살 엔딩을 맞았다.

  • 📢 섹션 요약 비유: RBO 룰의 붕괴는 **'군대의 계급장 맹신주의 파국'**과 같습니다. RBO 군대에서는 "장군(Rank 1 인덱스) 명령이 일병(Rank 15 풀스캔) 의견보다 무조건 우주 진리다!" 라는 헌법이 박혀 있습니다. 적군이 10만 명이 몰려와서 일병이 "장군님 무조건 튀어야 합니다!(풀스캔 회피 기동)" 소리쳐도, 융통성 없는 똥별 장군이 "내가 계급 1등이니까 내 말 들어 무조건 닥돌(인덱스 타기)해!!" 하다가 10만 대군이 한방에 전멸당해 몰살(서버 폭파 타임아웃 💥) 당해버리는 완벽한 계급주의 경직성 버그입니다.

Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)

1. RBO 15 랭크 (Rule Rank) 절대 서열의 해부 👑

RBO 뇌세포에 코딩된 If-else 15단계 스위치 룰북 뼈대.

  • [신의 영역] Rank 1 (Single row by Rowid):
    • WHERE ROWID = 'AAABBB' ➔ 디스크 창고 주소(ROWID)로 다이렉트 100% 직빵 미사일 꽂기. 이건 CBO 할애비가 와도 우주 1등 스피드.
  • [귀족 영역] Rank 2 ~ 4 (Unique / PK 기반 단일 핀셋 컷):
    • WHERE 사번 = '1234' ➔ PK(기본키)나 유니크(Unique) 인덱스를 탄다. 무조건 결과가 딱 1명만 나올 걸 DB가 100% 보장하는 무결점 초고속 로켓망.
  • [평민 영역] Rank 8 ~ 9 (일반 Index Range Scan 스키 타기):
    • WHERE 이름 = '홍길동' ➔ 이름(일반 인덱스). 한 명일 수도 있고 1만 명일 수도 있는(Range) 넓은 길. Rank 8(복합 인덱스)Rank 9(단일 인덱스)보다 기차처럼 묶여있어서 무조건 서열이 높다!
  • [불가촉천민] Rank 15 (Full Table Scan 무지성 밀기):
    • 쿼리에 인덱스가 단 1개도 없거나 조건절(WHERE)이 텅 빌 때, 어쩔 수 없이 눈물 흘리며 창고 문 1번부터 1,000만 번까지 싹 다 일자로 쭉 읽는 최하위 등급의 쓰레기 노가다 길.
  • 🌟 RBO의 극악 딜레마 (Tie-Breaker 룰):
    • "야! 쿼리에 A(일반 인덱스 Rank 9)랑 B(일반 인덱스 Rank 9)가 같이 들어왔어! 둘 다 9등 동률(Tie)인데 누구 타냐?"
    • RBO 대법관의 미친 결단: "야!! FROM 절 테이블 텍스트 쓴 거에서 [제일 뒤쪽]에 적힌 테이블 놈을 기준으로 타버리고(Driving), WHERE 조건절에선 [제일 밑바닥]에 적은 인덱스를 먼저 타라 쾅!!"
    • (개발자가 엔터키 치고 쿼리 텍스트 위아래 순서 바꿨다고 실행 계획이 180도 뒤집혀 뻗어버리는 진정한 야만 하드코딩 시대의 흑마법 코미디다).

2. 코더의 오만함: RBO 기만 조작 해킹술 (Query Manipulation)

"옵티마이저가 멍청하면 인간(개발자)이 강제로 속이면 되지 ㅋ"

  • 상황: WHERE 이름 = '홍길동' AND 부서 = '영업'

    • 데이터 1억 건. [이름 인덱스(Rank 9)]랑 [부서 인덱스(Rank 9)]가 둘 다 걸려있다.
    • 홍길동은 1명이고 영업부는 100만 명이다. 무조건!! 좁은 [이름 인덱스]를 1빠따로 타야 0.1초 컷으로 끝난다.
    • 근데 RBO 이 바보 기계 놈이 부서 인덱스를 1빠로 타서 100만 번 루프 돌다 서버가 뻗었다.
  • 아키텍트의 RBO 기만 메스 (Index Suppressing 융합 꼼수) 🔪:

    • "야!! RBO 놈 눈(뇌)을 멀게 가려버려!! 억지로 1개 인덱스를 장님(Suppressing)으로 만들어서 강제로 남은 1개(이름) 타게 유도해!!"
    • 소스 텍스트 강제 튜닝: WHERE 이름 = '홍길동' AND 부서 || '' = '영업'
    • 마법 폭발 ✨: RBO 왈 "어?! 부서 옆에 || ''(빈칸 합치기 함수 껍데기) 붙여 놨네?! 삐빅!! 🌟 좌변 가공 에러(Index Suppressing)!! 좌변 오염됐으니 이 [부서 인덱스]는 쓰레기 랭크 무효화 컷!! 오케이 그럼 살아남은 [이름 인덱스] 1개 남았으니 이거 1빠로 탄다 출발 쓩🚀!!"
    • 아무 의미 없는 || '' (빈 텍스트 합치기) 찌꺼기나 + 0 수학 껍데기를 억지로 쿼리에 덧발라, 멀쩡한 인덱스 장부 1개를 고의로 살해(무효화)시킴으로써 RBO의 바보 같은 랭킹 연산 뇌를 마비시키고 개발자가 원하는 1개의 핀셋 길로 멱살 잡아 강제 캐리(Forced Steering) 해버리는 구석기 튜닝 해킹술의 진면목이다.
  • 📢 섹션 요약 비유: RBO 뇌를 속이는 부서 || '' (빈칸 합치기) 기만 튜닝은, 달리기 경주에서 **'바보 심판(RBO) 눈 속이기 반칙'**과 같습니다. 1번 말(이름 인덱스-짱 빠름)과 2번 말(부서 인덱스-똥말)이 뛰려 합니다. 바보 심판은 자꾸 똥말(2번)을 먼저 뛰게(우선순위 랭크) 밀어줍니다. 빡친 마주(개발자)가 2번 똥말 다리에 몰래 **'투명 테이프(빈 문자열 껍데기 가공)'**를 칭칭 감아버립니다. 바보 심판은 "어? 2번 말 다리에 이물질(좌변 오염) 묻었네? 얘 실격 컷!!" 외치고, 어쩔 수 없이 남은 1번 짱 빠른 말만 뛰게 만듭니다. 반칙(좌변 가공 에러)을 역이용해 내가 원하는 진짜 우승마(1번 인덱스)를 강제로 뛰게 만드는 미친 꼼수 사기 해킹입니다.


Ⅲ. 융합 비교 및 다각도 분석

딜레마: RBO (규칙 맹신주의) vs CBO (자본주의 수학 통계 계산기)

1990년 오라클 7의 영광에서 2010년 오라클 10g의 퇴출 사형 선고까지의 피 터지는 세대교체.

잣대RBO (Rule-Based 규칙 기반 / 구석기 👴)CBO (Cost-Based 비용 통계 기반 / 21세기 🚀)아키텍트의 파멸과 진화 타점
판단 뇌 (Brain)코더가 적은 SQL 텍스트 문법 + 인덱스 계급 딱 2개만 쳐다보고 0.001초 만에 직진 쾅!매일 새벽 데브옵스 봇이 수집한 1,000만 건 데이터 통계 + 서버 CPU 부하 속도 100개 변수를 엑셀 수학(Cost) 곱셈 침.RBO는 눈 뜬 장님. CBO는 돈(디스크 I/O Cost) 귀신 계산기.
적응력 (Adaptability)어제 테이블 데이터 10건(텅 빔) ➔ 플랜 A.
오늘 1,000만 건 폭주(초우량 뚱땡) ➔ 똑같이 무식하게 플랜 A 고집하다 타 죽음 💀.
10건일 땐 플랜 A (풀스캔 밀기 슝).
1,000만 건 되면 "쉣 좆되네 컷!" 지 스스로 플랜 B (인덱스 타기)로 뇌 꺾어 자동 생존 🛡️.
데이터의 생애 주기 덩치(Volume) 변화에 적응(Adaptive)하지 못하는 놈(RBO)은 자연도태 멸종당했다.
개발자 피로도내가 소스 텍스트 순서 고치면 100% 내 맘대로 플랜 꺾임. (직관적 예측 통제 짜릿함 ✨).내가 힌트 떡칠 안 하면, 내일 아침 CBO 이 깡통 뇌가 맘대로 플랜 틀어버려 쇼핑몰 다운 터짐(통제 불능 랙 불안감 💦).코더의 오만한 통제력(RBO)은 빅데이터 쓰나미 앞에 박살 났고, 결국 기계의 지능(CBO)에 멱살 잡혀 복종해야 한다.

과목 융합 관점

  • 데이터베이스 (SQL Hint 힌트 떡칠과 CBO 통제 오버라이드 융합): "CBO가 똑똑하긴 한데 가끔 술 취해서 개소리 플랜(10초 타임아웃) 짜는데 어떡함?" CBO의 치명적 단점인 '낡은 통계 정보에 의한 돌발 오판(Bad Plan Flapping)'을 방어하기 위해 아키텍트는 구석기 RBO의 향수(수동 기어 통제력)를 CBO 심장 안에 억지 융합(Injection) 박아 넣었다!! 그게 바로 **/*+ INDEX(A IDX_A) USE_NL(A B) */ SQL 힌트(Hint 주사기)**다!! 아키텍트 왈: "야 CBO 깡통 대법관 새끼야!! 너 통계(Stats) 정보 보니까 오늘 병신 같은 풀스캔(15등) 플랜 뱉어내려 하네 미친아? 당장 뇌 스위치 꺼 락(Lock) 걸어!! 🌟 내가 저 힌트(Hint) 주사기 파란색 텍스트로 [A 테이블 인덱스 타서 B랑 바늘 조인(NL) 때려라] 라고 헌법 명령(Override) 박았어!! 니 엑셀 수학(Cost) 계산 결과가 어떻든 아가리 닥치고 무조건 100% 맹목적으로 내가 지시한 이 플랜 수동 기어로 꺾어 실행해 쾅!!!" 자동 변속기(CBO)가 빗길에서 미끄러져 낭떠러지로 처박히려 할 때, 시니어 DBA가 강제로 클러치를 밟고 1단 수동 기어(Hint 힌트 텍스트)를 쑤셔 박아 엔진 멱살을 잡고 위기를 탈출해 내는(Manual Steering) 완벽한 하이브리드 통제 융합술의 정점이다.

  • 클라우드 공학 (비용 임계점 CBO Cost 손익분기점 교차 팩폭): "도대체 데이터가 몇 건일 때 인덱스 타는 게 유리하고(CBO), 언제 풀스캔 치는 게 유리한가요?" 이 통곡의 벽(손익 분기점)을 오라클 RBO는 영원히 대답하지 못했다(무조건 인덱스만 탔으니까). 클라우드 CBO 아키텍트의 수학적 팩폭(Fact Check) 융합! "야!! 인덱스 스캔의 손익 분기점 컷 오프(Clustering Factor 임계치)는 전체 테이블 건수의 딱 [10% ~ 15%] 다 쾅!!" 내가 SELECT로 퍼올려야 할 데이터 덩치가 1,000만 건 중 50만 건(5%)이다? ➔ CBO 뇌 발동 "응 인덱스 타는 게(Random I/O) 디스크 덜 읽어서 개꿀! (Index Range Scan 승리)". 근데 내가 퍼올릴 덩치가 1,000만 건 중 200만 건(20% 임계점 돌파 💥)이다? ➔ CBO 뇌 발동 "야 미친아!! 책 100페이지 중에 20페이지 읽으면서 목차(인덱스) 왔다 갔다 200만 번 책장 넘기면(랜덤 액세스 폭발) 니 손가락 지문(디스크 바늘 헤드) 불타서 뼈 녹아 죽어!! 이럴 땐 인덱스 장부 찢어버리고 걍 1페이지부터 100페이지 끝까지 일자로 무지성 스윽~ 다 읽어 넘기는 게(Sequential I/O 풀스캔) 하드웨어 기계적으로 10배 싸고 빨라 돌격 쓩!!" RBO의 '인덱스 맹신주의'를 처참히 박살 내고, 퍼올릴 덩치(Percentage)에 따라 기계 물리 법칙(랜덤 vs 순차 I/O)의 이익/손해를 0.01초 엑셀로 쳐서 경로 스위치를 뗐다 붙였다 하는 CBO 통계 자본주의의 찬란한 진면목이다.

  • 📢 섹션 요약 비유: 인덱스 손익분기점(10~15%)의 CBO 판단은 **'사전(사전)에서 단어 찾기'**와 똑같습니다. 영어 사전(1,000쪽 테이블)에서 **'Apple 단어 1개(전체의 0.1%)'**를 찾을 땐? 맨 뒤의 색인(인덱스) 쪽수 보고 딱 그 페이지로 핀셋 점프(Random I/O) 하는 게 우주 최고 1초 컷입니다. 근데 선생님이 "야! A, B, C로 시작하는 단어 몽땅 다(전체의 20%) 찾아서 뜻 적어 와!" 시켰습니다. 이걸 색인(인덱스) 장부 1개 볼 때마다 200페이지 왔다 갔다 뒤적거리면 손가락 지문 닳아 뒤집니다(랜덤 액세스 병목 폭파 💥). 똑똑한 CBO 학생은 색인(인덱스)을 찢어 쓰레기통 버립니다!! "야 걍 맨 1페이지 A부터 쭈우욱~~ 형광펜 칠하면서 일자로 다 읽어 내려가는 게(순차 Full Scan) 100배 편하고 손가락 안 아파 스윽~!" 데이터가 클 땐 오히려 무식하게 다 읽는 게 기계적으로 최강의 스피드라는 걸 수학(Cost)으로 깨우친 마법입니다.


Ⅳ. 실무 적용 및 기술사적 판단

실무 시나리오

  1. 시나리오 — RBO 시대의 유물: FROM 절 순서 하드코딩과 병신 쿼리 튜닝 (The FROM-clause Trap): 1999년에 개발된 낡은 관공서 C언어 은행 시스템 소스를 열었다. 쿼리가 SELECT * FROM 대형테이블 A, 소형테이블 B, 극소형테이블 C WHERE... 로 짜여 있다.

    • 판단 (경악 💥): 요즘 CBO(오라클 19c) 엔진은 개발자가 A, B, C 로 막 쓰든 C, B, A 로 쓰든 뇌에서 "응 가장 쪼꼬만 C부터 내가 알아서 1번 타자(Driving)로 잡을게 ㅋ (Query Rewrite 융합)" 라며 찰떡같이 0.1초 컷으로 조인 순서를 최적화 튜닝해 준다.
    • 근데 저 1999년 소스는 RBO 룰 통치 시절에 짠 거다!! RBO는 통계 뇌가 없어서 A(100만)C(10건) 중 누가 뚱뚱한 놈인지 알 방법이 없다. 그래서 이 무식한 기계는 "FROM 절 텍스트 콤마(,) 순서에서 [가장 맨 뒤에 적힌 놈(C)]을 무조건 1번 타자 운전대(Driving Table)로 멱살 잡고 올린다!!" 라는 어이없는 구석기 룰북 텍스트 하드코딩 룰을 가지고 있었다.
    • 낡은 선배 코더들은 이 RBO 바보 뇌를 속여먹으려고, 테이블 조인 효율을 올리기 위해 쿼리 텍스트 타이핑을 칠 때 항상 **가장 작은 놈(C)을 FROM 절 맨 끄트머리 우측 끝에 억지로 적어 넣는 눈물겨운 인력 노가다 타이핑 튜닝술(Manual Syntax Tuning)**을 펼쳐야만 했다. CBO 시대엔 이 짓거리를 하면 오히려 옵티마이저 뇌와 힌트가 꼬여버리니 당장 쓰레기통에 버려야 할 안티패턴 유물이다.
  2. 시나리오 — RBO가 CBO로 업그레이드(Migration) 될 때 터진 국가망 타임아웃 셧다운 멸망전: 2010년 모 대기업. "야! 오라클 9i(RBO) 구리니까 당장 오라클 11g(CBO 100% 강제)로 최신 업그레이드 마이그레이션 싹 돌려!! 쾅!" 다음날 아침. 전국의 쇼핑 결제, 물류 시스템이 몽땅 타임아웃 10초 랙 걸려 서버 CPU가 불타오르며 그룹사 전체가 셧다운(Blackout 멸망) 당했다 💀.

    • 판단 (대재앙의 인과율): 10년 동안 선배들이 RBO 15단계 룰북에 완벽하게 딱 맞춰서 텍스트 꼼수(||'' 빈칸, FROM 순서 조작)로 예술같이 튜닝해 놓은 1만 개의 황금 쿼리(Legacy SQL)들이, CBO라는 새로운 뇌(Cost 통계 계산기) 환경에 떨어지는 순간 그 꼼수 문법이 모조리 호환성 파탄(Plan Flipping 널뛰기)을 일으키며 싹 다 풀스캔(Full Scan) 쓰레기 오판 길로 처박힌 것이다!!
    • 아키텍트의 피눈물 롤백 융합 (RBO 강제 심폐소생술 쉴드): 시스템 다운 1시간째. 사장님이 소리친다 "다 롤백해 미친놈들아!!" DBA 대장이 땀을 뻘뻘 흘리며 오라클 11g 시스템 커널 파라미터(Parameter) 환경 변수에 외과 수술 코드를 박아 넣는다! ALTER SYSTEM SET OPTIMIZER_MODE = RULE; (RBO 룰 베이스 모드 강제 롤백 락킹 쾅!!!) 기적 발동 ✨: CBO 뇌로 번쩍번쩍 돌아가던 오라클 최신 엔진이 "어? 닥치고 RBO 낡은 대법관 방식으로 돌아가라고? 옛썰!" 스위치가 탁 꺾이며 과거의 구형 15개 랭크 룰북 뇌로 빙의 퇴화(Downgrade)했다! 10년 전 선배들이 짠 구형 꼼수 쿼리들이 귀신같이 제 플랜(Plan) 길을 찾아 빛의 속도 0.01초 컷 스키를 타며 국가망이 죽음에서 기적적으로 1초 만에 부활 구원되었다. 아무리 기술(CBO)이 위대해도, 비즈니스 레거시(Legacy SQL)의 거대한 관성을 하루아침에 무시하고 강제 이식하면 생태계가 타죽는다는 IT 아키텍처 역사의 가장 뼈아픈 세대교체 블러드 배스(Blood Bath) 시나리오다.
  ┌─────────────────────────────────────────────────────────────┐
  │         실무 아키텍처: RBO(무지성 돌격) vs CBO(비용 계산 뇌)의 플랜 꺾기 분기 맵 │
  ├─────────────────────────────────────────────────────────────┤
  │                                                             │
  │ 🔍 [ 상황 쿼리 ]: SELECT * FROM 계좌 WHERE 잔고 > 1,000; (잔고 컬럼 인덱스 있음)│
  │     (※ 팩트체크: 잔고 1,000원 넘는 부자 손님은 전체 1억 명 중 9,000만 명 90%임!!)│
  │                                                             │
  │        ======= [ 💀 낡은 RBO 뇌 가동 (1999년의 죽음) ] ========   │
  │                                                             │
  │ 👴 [ RBO 구석기 대법관 ]                                        │
  │   - "오?! 쿼리 `잔고` 조건절에 인덱스 장부(Index Range Rank 8) 껍데기가 있네?!"│
  │   - "9,000만 명 뚱뚱한 놈인지 1건인지 나발인지 내 알 바 아님(통계 무지성 맹신)!"  │
  │   - 🌟 "인덱스(Rank 8)가 풀스캔(Rank 15)보다 무조건 계급 깡패니까 닥돌 쾅!!"     │
  │   ➔ (파국 💥) 9,000만 번 디스크 랜덤 튕김 I/O 치다가 메모리 스왑 터져 타임아웃 뒤짐.│
  │                                                             │
  │        ======= [ 🛡️ CBO 천재 뇌 가동 (2026년 모던 클라우드) ] ========│
  │                                                             │
  │ 🤖 [ CBO 자본주의 엑셀 뇌 (Cost 계산) ]                         │
  │   - "어 인덱스 있네? 일단 엑셀 견적서(Cost) 뽑아! 어 쉣, 통계 까보니까 이거 타면 │
  │     전체 90% 긁어오느라 랜덤 I/O 9,000만 번 터져서 예상 비용(Cost) 8,000만 원임 💀"│
  │   - "야! 다른 플랜 B(풀스캔 1자로 쫙 다 밀어버리기) 엑셀 견적 뽑아! 오? 1자로 쭉  │
  │     순차 읽기(Sequential I/O) 하니까 예상 비용 10만 원 컷이네 개꿀 ㅋ! ✨"        │
  │   - 🌟 [결론 판결봉 쾅!]: "야!! 인덱스 장부 당장 찢어 쓰레기통에 갖다 버려!!      │
  │     무조건 돈(Cost) 제일 싸게 먹히는 [Table Full Scan] 무지성 일자 밀기 실행 쓩🚀!!"│
└─────────────────────────────────────────────────────────────┘

[다이어그램 해설] "데이터 100건짜리에 인덱스 달아주면 안 돼요?" 라고 징징대는 주니어를 한 방에 날려버리는, RBO와 CBO의 유일하고도 거대한 뇌 구조 분기점(Divergence) 팩트 도면이다. RBO는 눈이 먼 검객이다. 데이터가 몇 건이 쏟아지든 눈을 감고 칼(Index)만 쥐어지면 무식하게 닥돌하다가 늪(90% 데이터 Random I/O)에 빠져 질식해 죽는다. 반면, CBO는 전쟁터에 오르기 전 1밀리초 만에 통계 엑셀 계산기(Cost Formula) 수만 번을 돌리는 제갈공명 뇌다. 인덱스가 아무리 예뻐도, 데이터 덩치가 임계점(10~15% 손익분기점)을 넘어가는 순간 "인덱스를 버리는 것(Index Bypass)이 유일한 생존의 길"임을 수학적으로 증명해 내고, 기꺼이 꼴찌 천민 플랜이었던 'Table Full Scan'으로 스티어링(Steering)을 꺾어버리는 유연한 자본주의 통계 지능이다. 결국 SQL 튜닝의 패권은 껍데기 문법(RBO)에서 데이터의 생애 주기 통계량(CBO)으로 완벽하게 권력이 넘어갔다.

도입 체크리스트

  • 기술적: 클라우드 DB(MySQL 8.0, 오라클 19c) 쓰면서 아직도 쿼리에 /*+ RULE */ (RBO 룰 베이스 강제 힌트) 찌꺼기 레거시 텍스트를 남겨두고 뺑뺑이 돌리고 있는가? 오라클 10g부터 이 힌트는 이미 내부 커널에서 완전히 무시(Ignore) 당하거나 껍데기만 남아 씹히는 기능 삭제(Deprecated) 사형 선고를 당했다! 아키텍트는 레거시 자바 시스템 소스를 정적 스캔(Static Analysis) 때려서 /*+ RULE */ 텍스트 덩어리가 박혀있는 쿼리 1만 개를 모조리 가위로 오려내 척살(Drop)해야 한다!! 그리고 그 자리에 무지성 룰이 아니라, CBO 뇌를 통제하는 모던 힌트 /*+ INDEX(A IDX_1) USE_NL(A B) */ 같은 비용 기반(Cost) 세밀 조작 주사기로 100% 뼈대를 갈아엎어(Refactoring 융합) 이식해야만, 1999년의 낡은 바보 망령이 2026년 클라우드 서버 메모리를 타임아웃 뻗게 만드는 시한폭탄 재앙을 사전 방어할 수 있다.
  • 운영·보안적: "우와 RBO는 통계 수집 안 해도 룰대로 가니까 유지보수 꿀이네요?" 라는 1차원적 게으름에 갇혀있는가? 초주검 팩트 💥: CBO는 매일 새벽 데브옵스 봇(Bot)이 테이블 데이터 건수 엑셀(Dictionary Stats)을 최신화시켜 꽂아줘야 뇌가 돌아가는데, 관리자가 이 통계 스케줄러(Job)를 끄고 1년 방치했다. 테이블 데이터는 1억 건 뚱땡이가 됐는데, CBO 통계 장부엔 1년 전 '10건 빈 깡통'이라고 적혀있다(통계 썩음 붕괴). CBO 뇌 발동: "오 10건이네? 풀스캔 1방 컷 쓩~ ➔ (1억 건 풀스캔 처맞고 서버 DB 100% 사망 다운 블랙아웃 터짐 💀!!)" 아키텍트 융합 수술 (Stats Gathering 쉴드): CBO(비용 기반)를 도입하는 순간, 방치(RBO 마인드)는 곧 사망이다!! 아키텍트는 하늘이 두 쪽 나도 매일 새벽 3시에 DBMS_STATS.GATHER_SCHEMA_STATS 통계 징징 봇(Bot) 융합 스크립트가 테이블 1,000개의 건수, 인덱스 뎁스, 데이터 분포도(Histogram 쏠림) 팩트 데이터를 이 잡듯 싹 다 뒤져서 CBO 뇌 속 엑셀 장부판을 100% Fresh 한 따끈따끈 데이터로 매일 리셋(Refresh) 물갈이시켜 주는 인프라 심폐소생 스케줄을 무결점으로 록온 방벽 쳐야 한다.

안티패턴

  • 인덱스 계급 맹신주의와 Full Table Scan 절대 악(惡) 프레임에 갇힌 노망 (The Full-Scan Phobia): 20년 차 낡은 SI 개발자 꼰대가 소리친다. "야! 이 쿼리 풀스캔 탔네 병신아! 무조건 힌트 쑤셔 박아서 인덱스 타게 당장 고쳐 쾅!!" 클라우드 팩폭 메스 💥: "이 RBO 구석기 뇌에 갇힌 꼰대 아저씨야 닥쳐라!!" 현대 클라우드 시대(DW, 빅데이터)에는 '인덱스 핀셋 타기'가 무조건 승리하는 시대가 아예 찢어져 끝났다! 테이블 100만 건의 데이터 중 절반(50만 건 통계치)을 읽어와서 GROUP BY SUM(매출액) 합계를 쳐야 하는 대형 쿼리(Analytics)다. 이걸 RBO 꼰대 말대로 인덱스 타게 억지로 힌트 박으면(Index Range Scan)? 디스크 바늘 헤더가 인덱스 찾고 원본 찾고 미친 듯이 50만 번 이리저리 춤(Random I/O)을 추다 디스크가 뜨겁게 달아올라 1시간이 걸려 서버가 뻗는다 💀. 천재 CBO의 구원 융합: "야! 인덱스 껍데기 싹 다 휴지통에 던져버리고!! 그냥 테이블 1번 칸부터 100만 번 칸 끝까지 일자 통나무로 쭈욱~~~ 스윽 한 방에 미친 덤프트럭 밀기로 긁어버려!! (Sequential I/O 쾌속 Full Table Scan)!!" 디스크 일자 긁기는 랜덤 튕김보다 기계적으로 1,000배 빠르다!! 풀스캔(Full Scan)은 죄악(15등 꼴찌)이 아니다! 대용량 통계 데이터를 한입에 털어 넣을 땐(Cost 연산 승리), 인덱스 1등 귀족들을 짓밟아 척살해 버리고 구세주로 등판하는 21세기 클라우드 분석망의 0순위 무지성 폭력 스피드 무기다.

  • 📢 섹션 요약 비유: 풀스캔(Full Scan)을 쓰레기라 무시하는 꼰대 RBO 마인드는, **'대청소 날 쓰레기 줍기'**와 똑같습니다. 방바닥에 머리카락(데이터)이 딱 1가닥 있으면? 테이프 롤러(인덱스 핀셋)로 1초 만에 딱 찍어내는 게 우주 1등 스피드입니다. 근데 방바닥 전체가 과자 부스러기 쓰레기로 50%가 덮여 쑥대밭(대용량 데이터 조회)인데, 이 낡은 꼰대 아저씨는 테이프 롤러(인덱스)로 50만 번 일일이 바닥을 찍고 자빠졌습니다(야근 3일 뻗음 💥). 똑똑한 청소부(CBO)는 테이프 집어 던지고, 엄청 큰 **'대형 빗자루(Full Table Scan 풀스캔)'**를 가져와서 걍 바닥 1자 밀기로 1방에 스윽~ 다 쓸어 담아서 1분 만에 청소를 쾌속 종료 컷! 쳐버리는 눈부신 기계공학적 자본 튜닝술입니다.


Ⅴ. 기대효과 및 결론

정량/정성 기대효과

구분RBO 구석기 대법관 (무지성 룰 계급 맹신)CBO 현대 대법관 (Cost 엑셀 연산 통계 기반 융합)개선 효과
정량 (I/O 비용)대용량 데이터(50% 이상)도 억지 인덱스 타다 서버 폭파15% 임계점 넘으면 스스로 인덱스 버리고 풀스캔으로 스위칭병목 I/O 디스크 바늘 튕김 랜덤 액세스 지연(Random I/O) 90% 이상 융합 척살 🚀
정량 (속도)복잡한 5개 뷰/조인 쿼리 들어오면 서열 룰 꼬여서 뇌 정지 타임아웃"야 괄호(뷰 View) 다 찢어 1판으로 합쳐(Query Rewrite)!" 평면 재조립코더의 저질 스파게티 쿼리를 엔진이 자체 튜닝(Rewrite)하여 응답시간(Response Time) 수천 배 단축
정성 (운영)쿼리 FROM 절 콤마 순서(Syntax) 조금만 바꿔도 플랜 180도 폭망콤마 텍스트 엉망으로 쳐도 통계 팩트만 보고 1번 타자 조인(Driving) 확정텍스트 하드코딩(Syntax)에 종속되었던 옵티마이저 뇌의 100% 자율주행 독립 선언 완수 🛡️

미래 전망

  • 머신러닝(ML) 융합 자율 주행 DB (Autonomous CBO 뇌의 진화): 지금의 CBO 뇌도 완벽하지 않다. 새벽에 통계 봇이 보고한 엑셀 장부(Stats)를 100% 믿고 가계산(Cost 연산)을 돌려 "야 1번 인덱스 길(Plan A)로 돌격 쏴!" 했는데, 막상 쿼리가 달리는 그 찰나(Execution Time 실행 중)에 보니까 1만 개가 아니라 1억 개 쓰레기 데이터 폭우가 쏟아져서 메모리 스왑 치고 서버가 뻗기 시작했다(통계 오판의 늪 파국 💥). 차세대 오라클 19c와 클라우드 네이티브 시대엔 진정한 딥러닝 AI 봇(Adaptive Optimizer)이 등판한다! "삐빅!! 야 장군(CBO)님 좆됐음!! 플랜 A 길(인덱스 타기)로 가고 있는데, 데이터 까보니까 1억 뚱뚱이 폭우임 이대로 3초 더 가면 타임아웃 서버 다운 멸망 100% 확정!! 🌟 야! 당장 달리던 거 브레이크 콱! 밟아 롤백(Rollback) 쳐버려!! 뇌피셜 플랜 A 작전서 당장 찢어 폐기하고, 지금 실시간(On-the-fly) 이 찰나의 순간에 0.001초 만에 플랜 B (풀스캔 믹서기 조인)로 핸들 틀어 꺾어 경로 우회(Rerouting) 다이빙 스위칭 박아라 쾅!!!" 쿼리가 실행되는(Runtime) 찰나의 1밀리초 순간에 지 스스로 잘못을 깨닫고, 런타임 동적으로 플랜(Plan) 길을 수정 비틀어 꺾어버리는(Adaptive Query Execution) 충격적인 자가 치유(Self-healing) AI 엔진의 시대가 개발자의 버그(오판 쿼리)를 완벽히 무혈 쉴드 덮어 통치하고 있다.
  • GraphQL과 분산 GraphQL Federation의 옵티마이저 무덤 파괴술: 옛날엔 오라클 DB 1개 안에서만 옵티마이저(CBO) 뇌가 길을 찾으면 끝났다. 지금 클라우드 MSA 시대. 넷플릭스 뷰(UI) 화면 1장을 띄우려면? [회원 정보 API 서버(MongoDB)] + [결제 API 서버(AWS DynamoDB)] + [추천 AI API 서버(Elasticsearch)] 3개의 남남 서버에 네트워크 HTTP 콜을 3번 쏴야 한다 (N+1 호출 지옥 파국 💥). 이 N+1 오버헤드를 찢어버릴 궁극의 차세대 슈퍼 옵티마이저 융합! GraphQL Federation (아폴로 라우터 Supergraph) 뇌 발동 ✨!! "야 프론트엔드 UI 놈아! 너 API 3번 찌르지 마 서버 타 죽어!! 넌 그냥 나한테 GraphQL 텍스트(Query) 1덩어리 1방에 던져! 그럼 내가 이 무형의 클라우드 대기권 상공에서, 0.01초 찰나에 뇌(Query Plan)를 굴려서 ➔ 1번 몽고DB한테는 이름표 쪼가리만 찔러 가져오게 찢고(Split) ➔ 2번 다이나모DB한테는 결제 번호만 가져오게 병렬(Parallel Fetch)로 동시 다발 쏴버려서!! ➔ 3개 찌꺼기 가져와서 공중에서 1개의 예쁜 JSON 덩어리로 융합 조립(Data Stitching)해서 프론트엔드한테 딱 1방 컷(1 Network I/O)으로 쏴줄게 쓩 🚀!!" 단일 오라클 쇳덩이 박스 안에 갇혀있던 CBO 뇌(Plan)가, 이제는 대기권 클라우드 상공 위로 둥실 떠올라 전 세계 대륙에 흩어진 수십 개의 마이크로서비스(MSA) API 핏줄 호출망 자체의 순서와 병렬 병합 통제(Network Orchestration Optimization)를 강제 지휘해 버리는 신의 분산 아키텍처로 하이퍼 차원 도약하고 있다.

참고 표준

  • RBO (Rule-Based Optimizer): 오라클 9i 이전 시대를 풍미했던 꼰대 내비게이션. 테이블에 데이터가 1억 건 뚱뚱하든 1건이든 그딴 팩트(통계)는 1도 관심 없고, 오직 "인덱스(장부) 껍데기가 쿼리 텍스트(WHERE)에 걸려있네? 그럼 풀스캔(15등) 버리고 무.조.건. 인덱스(8등) 타라 돌격 쾅!!" 무지성 15단계 계급 서열 룰북만 믿고 직진하다 1억 번 랜덤 I/O 치며 장렬히 서버를 폭사시킨 구석기 쇳덩이 뇌.
  • Cost-Based Optimizer (CBO 비용 기반): RBO의 무지성 룰을 쓰레기통에 묻어버린 현대 데이터베이스의 자본주의 통계 지능 심장. 매일 밤 수집한 데이터 덩치(Rows)와 인덱스 높이(Depth) 엑셀 숫자를 기반으로 수학 곱셈(디스크 I/O 횟수 + CPU 타임) 징징 쳐서 ➔ "야 인덱스 타는 거보다 무식하게 일자로 다 미는 게(풀스캔) 돈(Cost) 더 싸게 먹힌다 1방 밀기 꺾어!!" 스스로 유턴 기동(Optimization) 융합을 쳐내는 21세기 RDBMS 절대 권력.

"규칙(Rule)의 단호함은 1만 건 데이터 우물 안의 평화를 지켜주었으나, 1,000만 건 트래픽 폭풍 앞에서는 가장 먼저 인덱스라는 밧줄에 목이 졸려 자멸(Random I/O 붕괴)하는 나약한 관료제(Bureaucracy) 쇳덩이일 뿐이다." 개발자가 쿼리(SQL)를 짜는 순간 내 머릿속에서 옵티마이저의 플랜 길을 100% 직관적으로 통제(Control)할 수 있었던 RBO의 로맨스 시대는 끝났다. 관계형 데이터베이스(RDBMS)는 거대한 데이터 레이크(Data Lake)의 폭압 속에서 생존하기 위해, 낡은 15개 룰북(Rank)을 찢어 폐기하고 피 터지는 엑셀 통계 수학 곱셈(Cost Calculation)을 1밀리초 만에 돌려버리는 가장 이기적인 자본주의 계산기, CBO(비용 기반) 옵티마이저 뇌를 심장에 이식했다. 인덱스(Index)의 껍데기 이름표가 아무리 화려해도, 내가 퍼올릴 데이터의 덩치가 임계점(10~15%)을 넘어서는 찰나의 순간, "야 인덱스 장부 당장 찢어 쓰레기통에 폐기하고 무식하게 1자로 디스크 다 밀어버려!! (Full Scan 꺾기)" 라며 무지성의 순차 스캔으로 궤도를 꺾어 서버 타임아웃 폭파(Timeout)를 무혈 구원해 내는 천재 대법관. 비록 낡은 통계 봇의 게으름 탓에 가끔 바보 같은 플랜(Bad Plan)을 뿜어내며 개발자들의 뒤통수를 후려치고, DBA 아키텍트의 수동 힌트(Hint 주사기) 통제 멱살잡이를 눈물겹게 허용할지언정, RBO의 야만 시대를 종식시키고 수만 가지 조인(Join) 스파게티 쿼리의 혼돈을 단 하나의 최적화된 쾌속 미사일(Execution Plan) 경로로 제련해 내는 이 경이로운 CBO의 통계 기반(Stats-Driven) 뇌야말로 21세기 클라우드 트래픽 데이터 제국을 홀로 지탱하는 무관의 진정한 권력자인 것이다.

  • 📢 섹션 요약 비유: RBO 낡은 뇌와 CBO 천재 뇌의 차이는 '내비게이션의 교통 체증 반영' 유무와 완벽히 같습니다. 아빠가 보던 종이 지도(RBO)는 "무조건 고속도로(인덱스)가 국도(풀스캔)보다 넓고 빠른 길이다(절대 룰 랭킹)!" 라고 적혀있어서, 명절날 고속도로에 차가 100만 대 서 있어서 멈춰 폭사하기 일보 직전인데도 무지성으로 "닥치고 고속도로 진입 돌격!" 만 외치다 타죽습니다(서버 타임아웃 💥). 스마트폰 T맵(CBO)은 실시간 통계 팩트(Stats)를 계산합니다! "삐빅! 엑셀 징징 쳐보니 지금 고속도로(인덱스) 차 100만 대 존나 막힘 비용(Cost) 100만 원! ➔ 당장 고속도로 버려!! 좁은 골목길 국도(풀스캔)가 텅 비어서 1시간 단축 비용 10만 원! 당장 골목길 우회전 꺾어 기만 돌파 쓩🚀!!" 시시각각 변하는 팩트(데이터 양) 통계를 기반으로 길을 지 혼자 유연하게 꺾어 트는 궁극의 인공지능 자본주의 내비게이션 융합입니다.

📌 관련 개념 맵 (Knowledge Graph)

개념 명칭관계 및 시너지 설명
CBO (Cost Based Optimizer 비용 기반)RBO 구석기 대법관을 왕좌에서 끌어내리고 단두대에 쳐버린 21세기 현대 오라클/MySQL의 통치 뇌. 계급장(룰) 싹 무시하고, "인덱스 타면 디스크 100번 튕기고 풀스캔 치면 10번 튕기네? 풀스캔 승리 쾅!" 영수증 계산기.
Random I/O (랜덤 디스크 액세스 튕김)RBO가 서버를 타죽게 만든 주범. 넓게 100만 건 퍼올리는 쿼리에 "인덱스 계급 높다 무조건 타라 쾅!" 룰을 먹여서, 디스크 쇳덩이 바늘 헤드가 인덱스 갔다가 원본 갔다가 100만 번 미친 듯이 춤추다 달아올라 뻗음(Thrashing 붕괴).
Dictionary Stats (딕셔너리 데이터 통계)CBO 뇌의 유일한 약점이자 밥줄. CBO는 똑똑하지만 시각 장애인이다. 데브옵스 봇이 매일 새벽 3시에 [직원 테이블 지금 1억 명임] 통계 텍스트 엑셀표(Stats)를 책상에 꽂아줘야, CBO가 그걸 믿고 "응 인덱스 안타!" 플랜을 짠다. 통계 안 꽂으면 옛날 플랜으로 뻗음.
Execution Plan (실행 계획 도면 트리)RBO든 CBO든 뇌(옵티마이저) 연산이 끝나고 뽑아낸 엑스레이 지도. [A 인덱스 탐 ➔ B랑 루프 조인]. DBA는 쿼리 코드를 보지 않고 이 실행 계획 트리의 뻘건 텍스트 줄을 보고 "야 100만 건 풀스캔 지옥 떴어 힌트 꽂아!" 멱살 통제 튜닝함.
SQL Hint (힌트 강제 수동 락킹 💉)가끔 CBO 천재 뇌가 낡은 통계에 속아 쓰레기 오판(10초 랙)을 할 때, 인간 개발자가 쿼리에 /*+ FULL(A) */ 파란색 주사기를 꼽아 "야 뇌 생각 멈춰! 무조건 풀스캔 1자로 밀어 무지성 돌격 쾅!!" 수동 오버라이드 기어 통제술.

👶 어린이를 위한 3줄 비유 설명

  1. 심부름할 때 **RBO(옛날 로봇)**는 고지식한 로봇이에요! "무조건 자전거(인덱스)가 걷기(풀스캔)보다 계급이 높으니까, 1m 코앞 슈퍼마켓을 갈 때도 시간 낭비하며 억지로 자전거 창고가서 꺼내 타고 가!(멍청한 룰)" 라며 엄청 비효율적인 짓을 한답니다(서버 폭발 에러 💥).
  2. 그래서 똑똑한 **CBO(비용 계산 천재 로봇)**로 뇌를 싹 다 갈아 끼워줬어요! 이 로봇은 슈퍼마켓이 멀리 10km 거리에 있으면 "오 이건 자전거(인덱스) 타는 게 꿀!(비용 쌈)" 하고 스윽 갑니다.
  3. 근데 만약 코앞 1m 슈퍼를 가야 하거나, 이삿짐 수백 개(대용량 데이터 풀스캔)를 1번 만에 다 옮겨야 한다면? CBO 뇌 발동!! "야! 자전거(인덱스 장부) 꺼내는 게 시간 더 낭비야 버려! 무조건 걸어가서 손으로 크게 1방에 쓸어오는 게(풀스캔 1방 밀기) 돈 더 아끼고 최고야 쓩🚀!" 라고 자기 스스로 상황에 맞춰 가장 정답인 길(실행 계획)을 1초 만에 깎아 꺾어버리는 엄청난 인공지능 계산기랍니다!