by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

CBO의 기본 흐름




  • 사용자가 SQL문장을 접수하면 Oracle은 기본적인 Parsing 작업을 수행한다. Syntax를 체크하고 Object 이름과 권한등을 확인한다.
  • Transformation 과정을 수행한다. Subquery, Inline View와 같은 복잡한 부분들을 해소하고 Predicate를 변환한다. Star Transformation과 같은 복잡한 Trnasforation도 이 단계에서 이루어진다.
    이 과정을 흔희 Logical Optimization이라고 부른다.
  • Transformation이 이루어진 Query를 대상으로 Optimization작업을 수행한다. System Statistics와 Object Statistics를 이용해 Optimization에 필요한 기본정보를 얻고 Access Type과 Join Type을 고려한 비용 계산이 이루어진다. Query의 조건을 만족하는 가장 최소의 비용을 갖는 실행 계획을 도출한다. 이 과정을 흔히 Physical Optimization이라고 부른다.
  • 도출된 실행 계획을 이용해 Query를 실행하고 그 결과를 사용자에게 Return 한다.

  • 사용자가 Inline View가 포함된 간단한 SQL문장을 수행 요청한다.
  • Optimizer는 SQL 문장의 구문을 분석해서 Parse Tree를 생성한다. Inline View를 포함하고 있으므로 다층적인 Tree구조를 가지게 될 것이다.
  • Transformation 단계에서 Inline View를 Main Query 안으로 Merging한다. 이를 View Merging이라고 부른다. View Merging이 이루어지면 Inline View는 없어지고
    Query가 훨씬 간단한 형태, 즉 Optimization을 하기 좋은 형태로 변형된다.
  • Optimization단계에서 Table, Column, Histogram, System Statistics등을 고려하여 최적의 Cost를 갖는 실행 계획을 도출한다. 도출 결과 Index Range Scan이 선택되었다.

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.