사용자 도구

사이트 도구


study:oracle:datadb:2week_1:chap3

문서의 이전 판입니다!


제 3장 SQL의 실행계획

옵티마이져의 최적화 절차

  1. 최초에 사용자가 실행한 SQL은 Data Dictionary를 참조하여 Parsing을 수행한다.
  2. Optimizer는 파싱결과를 이용해 논리적으로 적용 가능한 실행계획 형태를 선택하고
    힌트를 감안하여 일차적으로 잠정적인 실행계획들을 생성한다
  3. Data Dictionary의 통계정보(데이타 분포도,테이블 저장구조, 인덱스 구조, 파티션 행태, 비교연산자 등)을 감안하여
    각 실행계획의 비용을 계산한다.
  4. Optimizer는 비용이 산출된 실행계획들을 비교하여 가장 최소의 비용을 가진 실행계획을 선택한다

질의 변환기

정의

  • 보다 양호한 실행계획을 얻을 수 있도록
    적절한 형태로 SQL의 모양을 변환하는 것
뷰병합(View Merging)
  1. 뷰 정의 시에 지정한 쿼리(뷰쿼리)를 액세스가 수행되는 쿼리(액세스쿼리)에 병합(Merge)
  2. 수행시킨 쿼리를 기준으로 뷰에 지정한 부분만 보정하므로 뷰로 발생되는 불이익이 크게 감소
  3. 액세스 쿼리의 조건들이 제 역할을 할 수 있고, 뷰 쿼리의 조건까지 추가
  4. 몇 가지 제한요소가 있어 이를 준수하지 않으면 뷰병합은 불가능
조건절 진입(Predicate Pushing)
  1. 뷰병합을 할 수 없는 경우를 대상으로 뷰쿼리 내부에 액세스쿼리의 조건절을 진입시키는 질의 변환
  2. 액세스쿼리를 뷰쿼리로 진입시키는 방법
  3. 이렇게 가능한 모든 방법을 동원해서 부여 조건을 뷰쿼리 내에 최대한 반영시켜 보다 양호한 실행계획을 유도
서브쿼리 비내포화(Subquery Unnesting)
Meterialized View(실체뷰)의 쿼리 재생성(Query rewrite)
OR 조건의 전개(expansion)
사용자 정의바인드 변수 엿보기(Peeking)

비용 산정기

실행계획 생성기

study/oracle/datadb/2week_1/chap3.1273727224.txt.gz · 마지막으로 수정됨: 2010/05/13 14:07 저자 starlits