반응형
옵티마이저는 SQL 문장이 실행될 때,
어떤 방식으로 데이터를 조회하는 것이 가장 효율적인지 판단해 주는 DBMS의 핵심 구성 요소입니다.
SQL이 실행되면 DBMS는 바로 데이터를 읽지 않고,
여러 가지 실행 방법(실행계획)을 먼저 생성합니다.
그리고 각 실행계획마다 예상 비용을 계산한 뒤,
그중 가장 비용이 낮다고 판단되는 실행계획을 선택해 SQL을 수행합니다.
옵티마이저의 종류
옵티마이저는 실행계획을 세우는 방식에 따라 크게 두 가지로 나뉩니다.
1️⃣ 규칙 기반 옵티마이저(RBO)
규칙 기반 옵티마이저는 미리 정해진 우선순위 규칙을 기준으로 실행계획을 선택합니다.
예를 들어,
- ROWID 접근
- PRIMARY KEY 또는 인덱스를 이용한 조회
이러한 방식은 항상 빠르다고 가정하고,
데이터의 실제 분포나 양과 상관없이 규칙이 높은 방식을 우선 선택합니다.
이 방식의 한계는,
- 테이블에 데이터가 적어도 불필요하게 인덱스를 사용하는 경우가 발생할 수 있고
- 통계정보를 거의 활용하지 않으며
- 옵티마이저 힌트나 HASH JOIN 같은 현대적인 최적화 기법을 사용할 수 없다는 점입니다.
이러한 이유로 현재는 거의 사용되지 않고,
과거에 주로 사용되던 방식이라고 이해하시면 됩니다.
2️⃣ 비용 기반 옵티마이저(CBO)
비용 기반 옵티마이저는 실제 실행 비용을 기준으로 판단합니다.
테이블, 컬럼, 인덱스 통계정보와
CPU 성능, 디스크 I/O 등의 시스템 통계정보를 종합해
각 실행계획의 비용을 계산하고, 그중 가장 효율적인 계획을 선택합니다.
따라서 CBO 환경에서는
- 통계정보가 정확하지 않거나 오래된 경우
- 실행계획이 비효율적으로 선택될 가능성이 높아집니다.
즉, 통계정보 관리가 곧 성능 관리라고 보셔도 무방합니다.
옵티마이저 동작에 영향을 주는 요소
- SQL 문장의 구조와 연산자 형태
- 인덱스, 파티션, 클러스터링 구성
- PK, FK, NOT NULL 같은 제약조건
- 옵티마이저 힌트 사용 여부
- 통계정보의 유무 및 최신성
- DBMS 버전 및 옵티마이저 관련 파라미터
같은 SQL이라도
DB 버전이 바뀌거나 통계정보가 갱신되면 실행계획이 달라질 수 있는 이유가 여기에 있습니다.
반응형
'IT > DB' 카테고리의 다른 글
| 기본키(PK) vs 외래키(FK) 차이 한 방에 끝내기 (0) | 2026.05.27 |
|---|---|
| DB, 테이블, 컬럼, 행 차이 완벽 요약 (0) | 2026.05.20 |
| PostgreSQL 기본 명령어 정리 (0) | 2026.02.17 |
| 인덱스 스캔(index scan) (0) | 2026.02.03 |