Oracle - CBO 기본 흐름

Posted 09 9, 2012 14:18, Filed under: DataBase/Oracle

# CBO는 아래 그림과 같은 흐름을 따른다.

사용자 삽입 이미지

   












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

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

    * Transformation 이 이루어진 Query 를 대상으로 Optimization 작업을 수행한다.
       System Statistics 와 Object Statistics 를 이용해 Optimization 에 필요한 기본 정보를 얻고 Access Type 과 Join Type 을 고려한 비용 계산이 이루어진다.
       Query 의 조건을 만족하는 가장 최소의 비용을 갖는 실행 계획을 도출한다.
       이 과정을 흔히 Physical Optimization 이라고 부른다.

    * 도출된 실행 계획을 이용해 Query 를 실행하고 그 결과를 사용자에게 Return 한다.


# 아래 그림은 CBO의 기본 흐름의 예제를 좀 더 자세하게 표현한 것이다.
사용자 삽입 이미지

 





















  
* 사용자가 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 이 선택되었다.

- CBO 가 Query 를 최적화 하는 과정을 눈으로 확인할 수 있는 방법은 없는가?
10053 Event 를 이용하면 된다.
10053 Event는 CBO 의 최적화 과정을 Trace 파일에 기록하는 역할을 한다.
Oracle 10g R2 이전 버전에서는 4번 단계, 즉 Optimization 단계만 기록된다.
하지만 Oracle 10g R2 부터 3번 단계, 즉 Transformation 단계가 포함된다.
Transformation 과정이 점점 복잡해지는 것에 따라 Troubleshooting 도구를 추가로 제공하는 것이다.


내용 출처 : Optimizing Oracle Optimizer - 조동욱

참고 :
SQL Parsing 절차, DML 문의 처리과정
옵티마이저(Optimizer)

※ 위 내용은, 여러 자료를 참고하거나 제가 주관적으로 정리한 것입니다.
   잘못된 정보나 보완이 필요한 부분을, 댓글 또는 메일로 보내주시면 많은 도움이 되겠습니다.
09 9, 2012 14:18 09 9, 2012 14:18


Trackback URL : http://develop.sunshiny.co.kr/trackback/825

Leave a comment
[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다


Recent Posts

  1. HDFS - Python Encoding 오류 처리
  2. HP - Vertica ROS Container 관련 오류...
  3. HDFS - Hive 실행시 System Time 오류
  4. HP - Vertica 사용자 쿼리 이력 테이블...
  5. Client에서 HDFS 환경의 데이터 처리시...

Recent Comments

  1. 안녕하세요^^ 배그핵
  2. 안녕하세요^^ 도움이 되셨다니, 저... sunshiny
  3. 정말 큰 도움이 되었습니다.. 감사합... 사랑은
  4. 네, 안녕하세요. 댓글 남겨 주셔서... sunshiny
  5. 감사합니다 많은 도움 되었습니다!ㅎㅎ 프리시퀸스

Recent Trackbacks

  1. cabo villas for rent cabo villas for rent %M
  2. buy my house fast buy my house fast %M
  3. buy my house now buy my house now %M
  4. how to sell a house quickly how to sell a house quickly 3 04
  5. cabo san lucas packages cabo san lucas packages 3 04

Calendar

«   04 2020   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

Bookmarks

  1. 위키피디아
  2. MysqlKorea
  3. 오라클 클럽
  4. API - Java
  5. Apache Hadoop API
  6. Apache Software Foundation
  7. HDFS 생태계 솔루션
  8. DNSBL - Spam Database Lookup
  9. Ready System
  10. Solaris Freeware
  11. Linux-Site
  12. 윈디하나의 솔라나라

Site Stats

TOTAL 2902896 HIT
TODAY 289 HIT
YESTERDAY 1312 HIT