1. 옵티마이저란?
사용자가 실행한 SQL을 해석하고, 데이터 추출을 위한 실행계획을 수립하는 프로세스를 의미한다. 이 실행계획을 수립하는 프로세스가 곧 SQL 실행 속도를 결정한다고 할 수 있다.
2. 옵티마이저의 종류
1) 오라클
i) RBO
ii) CBO
- v10g부터 기본적인 설정으로 적용되고 있음
2) 오라클 이외
i) CBO를 가지고 있음
3. RBO(Rule Based Optimizer)
1) 기본적으로 15개의 순위가 매겨진 규칙이 있음
- 이를 기초하여 실행계획을 수립한다.
2) SQL에 대한 실행계획이 하나 이상일 경우에는 순위가 높은 규칙을 사용한다.
3) 수립될 실행계획이 예측 가능하기 때문에 개발자가 원하는 처리 경로로 유도하기가 쉽다.
3-1. 15개의 순위
1) ROWID에 의한 1 ROW
2) 클러스터 조인에 의한 1 row
3) 유니크나 주 키를 사용한 해시 클러스터 키에 의한 1row
4) 유니크나 주키에 의한 1row
5) 클러스터 조인
6) 해시 클러스터 키
7) 클러스터 키
8) 결합 컬럼 인덱스
9) 단일 컬럼 인덱스
10) 인덱스에 의한 유한 영역 검색(equal 등)
11) 인덱스에 의한 무한 영역 검색(대소비교)
12) Sort Merge 조인
13) 인덱스로 구성된 칼럼의 최대 또는 최소
14) 인덱스로 구성된 칼럼으로 order by
15) 인덱스 없이 풀스캔
4. CBO(Cost Based Optimizer)
1) 대상 row들을 처리하는데 필요한 자원 사용을 최소하하여 데이터를 빨리 처리한다.
2) CBO에 영향을 미치는 요인은 힌트, 연산자, 인덱스, 클러스터, 테이블 등이 있다.
4-1. CBO(Cost Based Optimizer)의 통계 정보
1) 통계정보
- CBO의 성능을 최적의 상태로 만들기 위해 테이블, 인덱스, 클러스터 등을 대상으로 통계 정보 생성함
- 정기적으로 분석 작업을 하는 것이 중요하다.
- 가장 효율적인 실행계왹을 수립하기 위해 최소비용을 계산할 때 중요하게 사용됨.
'Language > SQL' 카테고리의 다른 글
[SQL] SQL REGEXP_SUBSTR LEVEL CONNECT BY 정리 (0) | 2022.08.11 |
---|---|
[SQL] SQL IN EXISTS 속도 차이 (2) | 2022.08.11 |
[SQL] SQL SELECT 쿼리문 실행순서 정리 (0) | 2022.07.17 |
[SQL] SQL 인덱스란? (3) | 2022.07.12 |
[SQL] SQL 튜닝 유형 - 인덱스(Index) (0) | 2022.07.08 |
[SQL] SQL 쿼리를 짤 때 주의해야 하는 것들 (0) | 2022.07.07 |
[SQL] SQL 실행계획이란? (0) | 2022.07.07 |
[SQL] SQL 튜닝이란? (0) | 2022.07.06 |
최근댓글