728x90
반응형
1. DB Optimizer란?
- SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해주는 DBMS 내부의 핵심 엔진
- SQL 실행 계획을 수립하고 SQL을 실행
- 동일한 결과가 나오는 SQL도 어떻게 실행하느냐에 따라서 성능이 달라지기에, SQL 성능에 중요한 역할
2. 특징
- 데이터 딕셔너리에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용 산정
- 여러 개의 실행 계획 중 최저 비용을 갖는 계획을 선택하고 SQL 실행
3. 실행 방법
- SQL 실행 > 파싱을 실행하여 SQL의 문법 검사 및 구문 분석 수행
- 구문 분석 > Optimizer가 규칙 기반 or 비용 기반으로 실행 계획을 수립
- 실행 수립 완료 > 최종적으로 SQL 실행 > 데이터 인출(Fetch)
4. 엔진
- Rule base Optimizer(규칙 기반 옵티마이저)는 15개의 우선 순위를 기준으로 실행 계획 수립
- 최신 Oracle 버전은 비용 기반 옵티마이저를 기본으로 사용
- /*+ RULE */를 사용해서 옵티마이저에서 규칙 기반 옵티마이저로 실행하도록 알려줌
우선순위 | 설명 |
1 | ROWID를 사용한 단일 행인 경우 |
2 | 클러스터 조인에 의한 단일 행인 경우 |
3 | 유일하거나 기본키(Primary Key)를 가진 해시 클러스터 키에 의한 단일 행인 경우 |
4 | 유일하거나 기본키(Primary Key)에 의한 단일 행인 경우 |
5 | 클러스터 조인인 경우 |
6 | 해시 클러스터 조인인 경우 |
7 | 인덱스 클러스터 키인 경우 |
8 | 복합 칼럼 인덱스인 경우 |
9 | 단일 칼럼 인덱스인 경우 |
10 | 인덱스가 구성된 칼럼에서 제한된 범위를 검색하는 경우 |
11 | 인덱스가 구성된 칼럼에서 무제한 범위를 검색하는 경우 |
12 | 정렬-병합(Sort-Merge) 조인인 경우 |
13 | 인덱스가 구성된 칼럼에서 MAX 혹은 MIN을 구하는 경우 |
14 | 인덱스가 구성된 칼럼에서 ORDER BY를 실행하는 경우 |
15 | 전체 테이블을 스캔(FULL TABLE SCAN)하는 경우 |
728x90
반응형