옵티마이저 (Optimizer)

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

가. 옵티마이저의 개념

  • 사용자가 요청한 SQL질의를 최소의 비용을 추정하여 실행계획을 수립하는 DBMS 핵심 엔진

나. 옵티마이저의 종류

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

 

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

항목RBOCBO
개념사전에 정의된 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 자원을 많이 사용하는 작업이므로 서비스 영향도 고려 최한시 수행 필요

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