study:oracle:datadb:2week_1:chap1
문서의 이전 판입니다!
제 3장 SQL의 실행계획
SQL과 옵티마이져
- 옵티마이져 목표 : SQL로 요구된 결과를 최소의 비용으로 처리할 수 있는 처리 경로를 결정
- SQL과 Optimizer의 관계
- SQL은 결과에 대한 요구
- 옵티마이져는 없는 길을 생성해 주는 것이 아님. 이미 존재하는 길을 단지 찾아줄 뿐
⇒ 사용자가 부여한 영향 요소에 따라 논리적으로 존재하는 최적이 달라짐
3.1.1 옵티마이져와 우리의 역할
- 숫자 목록 관계형 데이터베이스의 출현배경
: 데이터들 간에 물리적인 연결고리를 가지지 않아도 논리적인 연결고리만 있다면 원하는 데이터를 액세스 할 수 있다.
⇒논리적인 방법만으로 데이터를 찾을 수 있는 장치가 필요 - SQL? 요구서에 불과함. 표준언어로 채택한 것
- 옵티마이져 ? 사용자의 요구에 따라 그 때마다 최적의 경로를 찾아 주는 역할 책임자
- 옵티마이져는 단지 이미 존재하는 길들 중에서 하나를 선택해 주는 역할 ⇒ 사용자의 역할이 중요
3.1.2. 옵티마이져의 형태
규칙기반 옵티마이져 (RBO : Rule_based Optimizer)
- 인덱스 구조나 사용 연산자에 부여된 순위로써 최적경로 결정
① 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 ⑮ 전체 테이블 스캔
- 단점
- 통계정보를 전혀 가지지 않음
- 경우에 따라 비현실적인 처리경로 수립
EX> 1,000,000 로우를 가지는 TAB1테이블과 100로우를 가지는 TAB2테이블의 로우수를 알지 못하기 때문에
어느쪽이 전체 테이블 스캔 하는것이 유리한지 구별할 수 없다.
EX> 2종류의 값만 가지고 있어 평균분포도가 50%인 컬럼 A로 구성된 인덱스와
10,000종류를 가지고 있어 0.01%의 평균 분포도를
가진 컬럼 B로 구성된 인덱스가 존재. A='10' AND B LIKE '123%'을 주었을때
무조건 ‘=’로 사용한 컬럼A를 사용하는 것이 더 유리하다고 판단.
- 장점
- 수립될 처리경로 예측가능
- 사용자가 원하는 처리경로로 유도하기가 용이
- 일반적인 보편타당성이 있음(신뢰성)
study/oracle/datadb/2week_1/chap1.1273715018.txt.gz · 마지막으로 수정됨: 저자 newys

