일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Notice
Tags
- 보울룸
- data
- constraint
- 30일챌린지
- ERD
- 넷플릭스
- 데이터모델링
- where절
- 직장인일기
- 일기
- INSERT
- 홈트
- 책리뷰
- 전생
- 인덱스
- null
- 직장생활
- ROWNUM
- 테이블삭제
- SQL
- 환생
- 도전
- 회사싫어
- 30일글쓰기
- Update
- Drop
- rename
- 회사생활
- SQLD
- 빅데이터
Archives
- Today
- Total
최보름달
[SQL] 옵티마이저(optimizer), 규칙기반/ 비용기반 옵티마이저 본문
옵티마이저
최적화를 의미한다.
사용자가 질의한 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을 요약했습니다.
'문송한 회사생활 > SQL 공부' 카테고리의 다른 글
[SQL] 인덱스 (B-트리 인덱스, 클러스터형 인덱스) (0) | 2020.08.21 |
---|---|
[SQL] 옵티마이저 실행계획 (0) | 2020.08.21 |
[SQL] Procedure, Function, Trigger (0) | 2020.08.19 |
[SQL] 절차형 SQL (0) | 2020.08.18 |
[SQL] DCL (DATE CONTROL LANGUAGE) (0) | 2020.08.17 |