X

옵티마이저 (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 자원을 많이 사용하는 작업이므로 서비스 영향도 고려 최한시 수행 필요
Categories: 데이터베이스
도리: