사용자 도구

사이트 도구


study:oracle:datadb:2week_1:chap1

문서의 이전 판입니다!


제 3장 SQL의 실행계획

SQL과 옵티마이져

  1. 옵티마이져 목표 : SQL로 요구된 결과를 최소의 비용으로 처리할 수 있는 처리 경로를 결정
  2. SQL과 Optimizer의 관계
    • SQL은 결과에 대한 요구
    • 옵티마이져는 없는 길을 생성해 주는 것이 아님. 이미 존재하는 길을 단지 찾아줄 뿐
      ⇒ 사용자가 부여한 영향 요소에 따라 논리적으로 존재하는 최적이 달라짐

3.1.1 옵티마이져와 우리의 역할

  1. 숫자 목록 관계형 데이터베이스의 출현배경
    : 데이터들 간에 물리적인 연결고리를 가지지 않아도 논리적인 연결고리만 있다면 원하는 데이터를 액세스 할 수 있다.
    ⇒논리적인 방법만으로 데이터를 찾을 수 있는 장치가 필요
  2. SQL? 요구서에 불과함. 표준언어로 채택한 것
  3. 옵티마이져 ? 사용자의 요구에 따라 그 때마다 최적의 경로를 찾아 주는 역할 책임자
  4. 옵티마이져 실행계획에 영향을 주는 것들
  5. 옵티마이져는 단지 이미 존재하는 길들 중에서 하나를 선택해 주는 역할 ⇒ 사용자의 역할이 중요

3.1.2. 옵티마이져의 형태

규칙기반 옵티마이져 (RBO : Rule_based Optimizer)

  1. 인덱스 구조나 사용 연산자에 부여된 순위로써 최적경로 결정
    ① ROWID로 1로우 액세스
    ② 클러스터 조인에 의한 1로우 액세스
    ③ Unigue HASH Cluster에 의한 1로우 액세스
    ④ Unique INDEX에 의한 1로우 액세스
    ⑤ CLUSTER 조인
    ⑥ Non Unique Hash Cluster Key
    ⑦ Non Unique Cluster Key
    ⑧ Non Unique 결합 인덱스
    ⑨ Non Unique 한 컬럼 인덱스
    ⑩ 인덱스에 의한 범위처리
    ⑪ 인덱스에 의한 전체범위 처리
    ⑫ Sort Merge 조인
    ⑬ 인덱스 컬럼의 MIN, MAX처리
    ⑭ 인덱스 컬럼의 ORDER BY
    ⑮ 전체 테이블 스캔
  • 단점
    1. 통계정보를 전혀 가지지 않음
    2. 경우에 따라 비현실적인 처리경로 수립
EX> 1,000,000 로우를 가지는 TAB1테이블과 100로우를 가지는 TAB2테이블의 로우수를 알지 못하기 때문에 
     어느쪽이 전체 테이블 스캔 하는것이 유리한지 구별할 수 없다.
     
EX> 2종류의 값만 가지고 있어 평균분포도가 50%인 컬럼 A로 구성된 인덱스와 
    10,000종류를 가지고 있어 0.01%의 평균 분포도를
    가진 컬럼 B로 구성된 인덱스가 존재. A='10' AND B LIKE '123%'을 주었을때 
    무조건 ‘=’로 사용한 컬럼A를 사용하는 것이 더 유리하다고 판단.
  • 장점
    1. 수립될 처리경로 예측가능
    2. 사용자가 원하는 처리경로로 유도하기가 용이
    3. 일반적인 보편타당성이 있음(신뢰성)
study/oracle/datadb/2week_1/chap1.1273715063.txt.gz · 마지막으로 수정됨: 2010/05/13 10:44 저자 newys