일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- big_data
- 함수
- code
- 파이썬
- python
- list
- 생활코딩
- 임경덕
- 데이터사이언스
- 데이터과학
- 빅데이터
- stat
- for문
- 숫자야구소스
- DataAnalysis
- 리스트
- 숫자야구코드
- R
- 숫자야구
- 코딩야학
- 야학
- if문
- DATABASE
- sql
- BigData
- 하둡
- hadoop
- 루비페이퍼
- 이토록 쉬운 통계&R
- 데이터분석
- Today
- Total
yekang
옵티마이저와 실행계획 본문
옵티마이저(Optimizer)는 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을 수행한다. 이러한 최적의 실행 방법을 실행계획(Execution Plan)이라고 한다. 다양한 실행 방법들 중에서 최적의 실행 방법을 결정하는 것이 바로 옵티마이저의 역할이다. 최적의 실행 방법 결정이라는 것은 어떤 방법으로 처리하는 것이 최소 일량으로 동일한 일을 처리할 수 있을지 결정하는 것이다. 옵티마이저가 최적의 실행 방법을 결정하는 방식에 따라 규칙기반 옵티마이저와 비용기반 옵티마이저로 구분할 수 있다. 현재는 대부분의 관계형 데이터베이스는 비용기반 옵티마이저만을 제공한다.
가. 규칙기반 옵티마이저
규칙(우선 순위)을 가지고 실행계획을 생성한다. 실행계획을 생성하는 규칙을 이해하면 누구나 실행계획을 비교적 쉽게 예측할 수 있다는 장점이 있다. 우선 순위가 높은 규칙이 적은 일량으로 해당 작업을 수행하는 방법이라고 판단한다. 규칙기반 옵티마이저는 인덱스를 이용한 액세스 방식이 전체 테이블 액세스 방식보다 우선 순위가 높다. 따라서 해당 SQL문에서 이용 가능한 인덱스가 존재한다면 전체 테이블 액세스 방식보다는 항상 인덱스를 사용하는 실행계획을 생성한다.
* 조인 순서를 결정할 때 - 조인 칼럼 인덱스의 존재 유무
조인 칼럼에 대한 인덱스가 양쪽 테이블에 모두 존재 : 우선 순위가 높은 테이블을 선행 테이블(Driving Table)로 선택
한쪽 조인 칼럼에만 인덱스가 존재 : 인덱스가 없는 테이블을 선행 테이블로 선택
모두 인덱스가 존재하지 않으면 : FROM 절에 나열된 테이블의 역순으로 선행 테이블을 선택
*규칙기반 옵티마이저의 조인 기법의 선택
양쪽 조인 칼럼에 모두 인덱스가 없는 경우 : Sort Merge Join
둘 중 하나라도 조인 칼럼에 인덱스가 존재 : NL Join
나. 비용기반 옵티마이저
SQL문을 처리하는데 필요한 비용이 가장 적은 실행계획을 선택하는 방식. 여기서 비용은 SQL 문을 처리하기 위해 예상되는 소요시간 또는 자원 사용량을 의미한다.
'빅데이터 > SQL' 카테고리의 다른 글
SQL 기본 (1) (0) | 2018.02.26 |
---|---|
sequence, subquery (0) | 2018.01.04 |
동의어 SYNONYM (0) | 2018.01.04 |
날짜 형식 모델의 요소 ,DECODE 함수, 그룹함수 중복, 조인, CRUD, insufficient privileges (0) | 2018.01.02 |
날짜에 대한 ROUND, TRUNC 함수 (0) | 2017.12.29 |