2019년 1월 7일
옵티마이저 (Optimizer)
I. Driving Range 최소화, 옵티마이저
가. 옵티마이저의 개념
- 사용자가 요청한 SQL질의를 최소의 비용을 추정하여 실행계획을 수립하는 DBMS 핵심 엔진
나. 옵티마이저의 종류
종류 | 개념 |
---|---|
규칙기반 옵티마이저 (RBO) | – 정해놓은 규칙에 따라 액세스 경로를 평가하고 실행 계획을 선택 |
비용기반 옵티마이저 (CBO) | – 비용을 기반으로 실행 계획 최적화 수행 – 비용: 쿼리 수행 시 소요 일 량, 시간 |
- RBO의 무조건적 규칙에 따른 비현실적 실행 계획의 단점을 극복하기 위해 CBO개발
II. 규칙기반/비용기반 옵티마이저 비교
항목 | RBO | CBO |
---|---|---|
개념 | 사전에 정의된 Rule기반 | 최소비용 계산 실행계획 수립 |
기준 | 실행우선 순위(Ranking) | 액세스 비용(Cost) |
인덱스 | 인덱스 존재 시 항상 사용 | Cost에 의한 결정 |
성능 | 사용자 SQL작성 숙련도 | 옵티마이저 예측 성능 |
장점 | 판단이 매우 규칙적 실행 예상 가능 | 통계 정보를 통한 현실 요소 적용 |
단점 | 예측 통계정보 요소 무시 | 최소 성능 보장 계획의 예측 제어 어려움 |
사례 | AND 중심 양쪽 ‘=’ 시 Index Merge 사용 | AND 중심 양쪽 ‘=’ 시 분포도별 Index 선택 |
- 대부분의 상용 DBMS는 CBO 기반이며, Oracle도 10g버전부터 RBO 지원 중단
III. 옵티마이저의 실행계획 최적화 절차
가. 옵티마이저의 실행계획 최적화 절차도
나. 옵티마이저의 실행계획 최적화 절차
최적화 절차 | 설명 |
---|---|
Query 변환 | – 사용자가 작성한 SQL문을 처리하기 용이한 형태로 변환 |
비용 예측 | – 다양한 대안 계획의 비용을 예측 – 정확한 예측 위해 정확한 통계정보 필요 |
계획 생성 | – 동일 결과의 다양한 대안 생성 – 정확한 예측을 위해 최적화 시간 소요 |
- CBO는 통계 정보에 따라 실행 계획을 수립하므로 통계 정보 관리가 중요
IV. 최적 옵티마이저 활용 위한 통계정보 관리에 대한 제언
가. 최적 옵티마이저 활용 위한 다양한 통계정보 관리
통계정보 | 설명 |
---|---|
테이블 통계 | compute 전수검사, estimate 표본조사 |
인덱스 통계 | 인덱스를 활용한 통계 정보 |
컬럼 통계 | 테이블, 인덱스 제외 컬럼 통계만 수집 |
시스템 통계 | I/O, CPU 성능 등 H/W 특성 측정 |
나. 최적 옵티마이저 활용 위한 통계정보 수집 시 고려사항
고려사항 | 설명 |
---|---|
시간 | 시스템 부하가 적은 시간대 산정 필요 |
샘플크기 | DB와 세그먼트 크기에 비례 일정부분만 추출 |
정확성 | 오브젝트 데이터와 통계정보 데이터 근접필요 |
안정성 | 통계정보 수집으로 인한 성능저하 최소화 |
- 통계정보 수집은 CPU, 시스템 I/O 자원을 많이 사용하는 작업이므로 서비스 영향도 고려 최한시 수행 필요