본문 바로가기

Dev. Database/Oracle

[오라클] OPTIMIZER 개요 및 구조

1. 개요 및 구조


옵티마이저(Optimizer)는 SQL을 가장 빠르고 효율적으로 수행할 최적(최저비용)의 처리경로를 생성해 주는 DBMS 내부의 핵심엔진이다. 사용자가 구조화된 질의언어(SQL)로 결과집합을 요구하면, 이를 생성하는데 필요한 처리경로는 DBMS에 내장된 옵티마이저가 자동으로 생성해준다. 옵티마이저가 생성한 SQL 처리경로를 실행계획(Execution Plan)이라고 부른다. 옵티마이저의 SQL 최적화 과정을 요약하면 다음과 같다.

  • - 사용자가 던진 쿼리수행을 위해, 후보군이 될만한 실행계획을 찾는다.
  • - 데이터 딕셔너리(Data Dictionary)에 미리 수집해 놓은 오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 
  •   예상비용을 산정한다.
  • - 각 실행계획을 비교해서 최저비용을 갖는 하나를 선택한다.

   

 옵티마이저를 한 마디로 정의하면, 오라클의 내부 프로그래머라고 할 수 있으며, 동작구조는 다음과 같다.



사용자가 쿼리문을 작성하여 실행하면, SQL 실행 엔진에 의해 동작하기 전에  옵티마이저에 의해 최적화되는 것

이다. 이러한 최적화의 예는 다음의 쿼리을 보자.



위와 같이 사용자가 IN 쿼리를 날리면, 옵티마이저에서 자동으로 OR 구조로 변환되는 것이다. 

변환대상 연산자는 아래의 내용을 참조하도록 하자.



[참조] DBGuide.net, 구루비 지식창고, 오라클 실습