Optimizing Oracle Optimizer (2011년)
CBO의 기본 흐름 0 0 2,673

by 구루비스터디 CBO Optimizer [2018.07.14]



  • 사용자가 SQL문장을 접수하면 Oracle은 기본적인 Parsing 작업을 수행한다. Syntax를 체크하고 Object 이름과 권한등을 확인한다.


Logical Optimization
  • Transformation 과정을 수행한다. Subquery, Inline View와 같은 복잡한 부분들을 해소하고 Predicate를 변환한다.
  • Star Transformation과 같은 복잡한 Trnasforation도 이 단계에서 이루어진다.
  • 이 과정을 흔희 Logical Optimization이라고 부른다.


Physical 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이 선택되었다.
"데이터베이스 스터디모임" 에서 2009년에 "OPTIMIZING ORACLE OPTIMIZER " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3902

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입