최보름달

[SQL] 옵티마이저(optimizer), 규칙기반/ 비용기반 옵티마이저 본문

문송한 회사생활/SQL 공부

[SQL] 옵티마이저(optimizer), 규칙기반/ 비용기반 옵티마이저

PieMoon 2020. 8. 20. 22:20

옵티마이저

최적화를 의미한다. 

사용자가 질의한 SQL에 대해 최적의 실행 방법을 결정하는 역할을 한다. 

최적의 실행 방법을 결정하는 방식에는 크게 두가지가 있다. 

규칙기반 옵티마이저

비용기반 옵티마이저

대부분은 비용기반 옵티마이저만 제공한다. 

 

규칙기반 옵티마이저

규칙, 우선순위를 가지고 실행계획을 생성하는 옵티마이저.

우선순위가 정해져 있고, 이 우선순위를 기반으로 실행계획을 생성한다. 

인덱스, 조인이 중요한 판단 기준이 된다. 

순위 기법 설명
1 single row by rowid 테이블에서 하나의 행을 액세스 하는 방법. rowid 는 행이 포함된 데이터 파일, 블록 등의 정보를 가지고 있기 때문에 다른 정보를 참조하지 않도고 바로 원하는 행을 액세스 할 수 있다. 하나의 행을 액세스 하는 가장 빠른 방법
2 single row by cluster join  
3 single row by hash cluster key with unique or primary key  
4 single row by unique or primary key 유일 인덱스 (unique index)를 통해서 하나의 행을 액세스 하는 방식.인덱스를 먼저 액세스 하고 인덱스에 존재하는 rowid를 추출하여 테이블의 행을 액세스 한다.
5 cluster join  
6 hash cluster key  
7 indexed cluster key  
8 composite index 복합 인덱스에 동등(=) 조건으로 검색하는 경우. 
9 single column index 단일 컬럼 인덱스에 동등(=) 조건으로 검색하는 경우.
10 bounded range search on indexed cloumns 인덱스가 생성되어 있는 컬럼에 양쪽 범위를 한정하는 형태로 검색하는 방식. between, like 
11 unbounded range search on indexed columns 인덱스가 생성되어 있는 컬럼에 한쪽 범위만 한정하는 형태로 검색하는 방식 >, <, >=...
12 sort merge join  
13 max or min of indexed cloumn  
14 order by on indexed column  
15 full table scan 전체 테이블을 액세스 하면서 조건절에 주어진 조건을 만족하는 행만 결과로 추출하는 방식.

 

비용기반 옵티마이저

조건기반 옵티마이저의 한계를 극복해낸 방식.

비용이 가장 적게 드는 방식을 택한다. 여기서 비용이란 소요시간이나 자원 사용량을 의미한다.

비용기반 옵티마이저는 질의 변환기, 대안 계획 생성기, 비용 예측기 등의 모듈로 사용자가 작성한 SQL 문을 보다 용이한 형태로 변환한다.

비용기반 옵티마이저는 실행계획의 예측 및 제어가 어렵다는 단점도 있다.

 

 

 

 

 

kdata 한국데이터진흥원에서 출간한 SQL 전문가 가이드 2013 Edition을 요약했습니다.