반응형
Ⅰ. 최적의 SQL 쿼리 수행을 위한, 옵티마이저의 개요
가. 옵티마이저의 정의
- 사용자가 질의한 SQL문에 대해서 실행 계획과 처리 비용을 추정하여 최적의 실행 계획을 수립하는 DBMS 핵심 엔진
나. 옵티마이저의 핵심 기능
- 실행 계획 탐색: 주어진 SQL 질의를 처리할 수 있는 실행 계획 나열
- 비용 산정: 각 실행 계획의 예상 비용 계산하고 최소 비용 계획 실행
Ⅱ. 옵티마이저 분류
가. 규칙기반 옵티마이저, RBO
항목 | 설명 |
개념 | 인덱스 구조, 비교연산자에 따른 순위 부여를 기준으로 최적의 결오를 설정 |
특징 | - 판단이 규칙적이고 분명하여 사용자가 정확히 예측 가능 - 통계 정보라는 현실 요소를 무시하여 판단 오차 클 수 있음 |
우선순위 | 1. ROWID 사용 단일 행 2. 클러스터 조인에 의한 단일 행 3. UNIQUE 또는 PRIMARY KEY 가진 해시 클러스터 키에 의한 단일행 4. UNIQUE 또는 PRIMARY KEY에 의한 단일 행 5. 클러스터 조인 6. 해시 클러스터 키 7. 인텍스 클러스터 키 8. 복합 컬럼 인덱스 9. 단일 컬럼 인덱스 10. 인덱스 구성 컬럼에서 제한된 범위 검색 11. 인덱스 구성 컬럼에서 제한되지 않은 범위 검색 12. Sort merge 조인 13. 인덱스가 구성된 컬럼 MAX 또는 MIN 구하는 경우 14. 인덱스가 구성된 컬럼 ORDER BY 수행 15. 전체 테이블 스캔 |
원리 | SQL문 실행하기 위해 이용하는 인덱스, 연산자, 객체의 종류 등을 이용하여 정의된 규칙 기반으로 최적의 SQL 실행 |
나. 비용기반 옵티마이저, CBO
유형 | 설명 |
개념 | 처리 방법들에 대한 비용 산정해 보고 그 중 최소 비용 처리 방법 선택 |
개념도 | |
구성 | - 질의 변환기: SQL문을 실행하기 용이한 형태로 변환 - 대안 계획 생성기: 같은 결과를 생성하는 다양한 대안 계획 생성 - 비용 예측기: 생성된 대안 계획의 비용을 예측 |
원리 | SQL문을 처리하기 위해 예상되는 소요시간 또는 자원 사용량 예측 비용 예측을 위해 객체 통계 정보(테이블, 인덱스, 컬럼 등)와 시스템 통계정보(CPU, 디스크) 사용 |
Ⅲ. 관계형 DB에서 옵티마이저의 역할
가. 관계형 DB에서 질의 처리 단계
- 옵티마이저는 Query Rewrite, Query Optimization 단계에 참여
나. 관계형 DB의 질의 처리 단계에서 옵티마이저의 역할
단계 | 설명 |
Query Rewrite | 서브 질의와 뷰의 병합을 수행하여 더욱 효과적인 질의를 찾는 과정 |
Query Optimization | 규칙 기반 또는 비용 기반으로 최적의 질의 선택 |
QEP Generation | 최적 질의에 대한 Query Excution Plan (질의 실행 계획) 생성 |
반응형