옵티마이저 (Optimizer)

1. Driving Range 최소화, 옵티마이저

(1) 옵티마이저의 개념

옵티마이저 개념, 절차
  • 사용자가 요청한 SQL 질의를 최소의 비용을 추정하여 실행 계획을 수립하는 DBMS 핵심 엔진

(2) 옵티마이저의 종류

종류개념
규칙 기반 옵티마이저
(RBO)
– 정해놓은 규칙에 따라 액세스 경로를 평가하고 실행 계획을 선택
비용 기반 옵티마이저
(CBO)
– 비용을 기반으로 실행 계획 최적화 수행
– 비용: 쿼리 수행 시 소요일, 시간
  • RBO의 무조건적 규칙에 따른 비현실적 실행 계획의 단점을 극복하기 위해 CBO개발

 

2. 규칙/비용 기반 옵티마이저 비교

항목규칙 기반 (RBO)비용 기반 (CBO)
개념사전에 정의된 Rule기반최소비용 계산 실행 계획 수립
기준실행 우선 순위(Ranking)액세스 비용 (Cost)
인덱스인덱스 존재 시 항상 사용Cost에 의한 결정
성능사용자 SQL작성 숙련도옵티마이저 예측 성능
장점판단이 매우 규칙적 실행 예상 가능통계 정보를 통한 현실 요소 적용
단점예측 통계 정보 요소 무시최소 성능 보장 계획의 예측 제어 어려움
사례AND 중심 양쪽 ‘=’ 시 Index Merge 사용AND 중심 양쪽 ‘=’ 시 분포도별 Index 선택
  • 대부분의 상용 DBMS는 CBO 기반이며, Oracle도 10g버전부터 RBO 지원 중단

 

3. 옵티마이저의 실행 계획 최적화 절차

(1) 옵티마이저의 실행 계획 최적화 절차도

옵티마이저 최적화 절차

(2) 옵티마이저의 실행 계획 최적화 절차

최적화 절차설명
Query 변환– 사용자가 작성한 SQL문을 처리하기 용이한 형태로 변환
비용 예측– 다양한 대안 계획의 비용을 예측
– 정확한 예측 위해 정확한 통계 정보 필요
계획 생성– 동일 결과의 다양한 대안 생성
– 정확한 예측을 위해 최적화 시간 소요
  • CBO는 통계 정보에 따라 실행 계획을 수립하므로 통계 정보 관리가 중요

 

4. 최적 옵티마이저 활용 위한 통계 정보 관리에 대한 제언

(1) 최적 옵티마이저 활용 위한 다양한 통계 정보 관리

통계 정보설명
테이블 통계compute 전수 검사, estimate 표본 조사
인덱스 통계인덱스를 활용한 통계 정보
컬럼 통계테이블, 인덱스 제외 컬럼 통계만 수집
시스템 통계I/O, CPU 성능 등 H/W 특성 측정

(2) 최적 옵티마이저 활용 위한 통계정보 수집 시 고려사항

고려사항설명
시간시스템 부하가 적은 시간대 산정 필요
샘플 크기DB와 세그먼트 크기에 비례 일정 부분만 추출
정확성오브젝트 데이터와 통계 정보 데이터 근접 필요
안정성통계 정보 수집으로 인한 성능 저하 최소화
  • 통계 정보 수집은 CPU, 시스템 I/O 자원을 많이 사용하는 작업이므로 서비스 영향도 고려 최한시 수행 필요

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^