1. 쿼리 변환이란?
2011.05.16 00:06
- 결과가 동일하더라도 SQL문을 어떻게 작성하느냐에 따라 성능의 차이가 생길수 있음
- 최근의 비용기반 옵티마이저는 사용자 SQL을 최적화에 유리한 형태로 재작성하는 작업을 먼저 진행
- 비용기반 옵티마이저의 서브엔진중 Query Transformer 가 담당
쿼리변환 (Query Transformation)
- 쿼리 옵티마이저가 SQL을 분석해 의미적으로 동일하면서도 더 나은 성능이 기대되는 형태로 재작성하는것을 말함
- 최적화전 사전 정지 작업
- 쿼리변환
- 논리적 최적화
- 후단계
- 물리적 최적화 라고 하기도 함
쿼리변환의 종류
( Query Optimization in Oracle 9i, Query Optimization in Oracle Databse10g Release 2 참고)
1. 서브쿼리 Unnesting
2. 뷰 Merging
3. 조건절 Pushing
4. 조건절 이행
5. 공통 표현식 제거
6. Outer 조인을 Inner 조인으로 변환
7. 실체화 뷰 쿼리로 재작성
8. Star 변환
9. Outer 조인 뷰에 대한 조인 조건 Pushdown
10. OR-expansion
쿼리변환의 작동방식
- 휴리스틱 (Heuristic) 쿼리 변환:
- 결과가 보장되면 무조건 쿼리 변환 수행
- 규칙기반 최적화 기법
- 경험적으로 항상 더 나은 성능을 보일것이라는 개발팀의 판단 반영
- 비용기반 쿼리변환
- 변환된 쿼리 비용이 더 낮을 때만 사용, 그렇지 않으면 원 쿼리를 대상으로 최적화 수행
- 9i 기준(변환 종류중)
- 1~6: 휴리스틱 쿼리 변환
- 7~10: 비용기반 쿼리 변환
- 10g
- 서브쿼리 Unnesting과 뷰 Merging이 비용기반 쿼리 변환으로 전환
- Predicate Pushing중 Join Predicate Pushdown도 비용기반 쿼리 변환으로 전환
- 이후
- Join Elimination (조인제거)
- Aggregate Subquery Elimination (집계서브쿼리를 분석함수로 변환)
- Set Join Conversion (집합연산을 조인으로 변환)
- 등 추가
- 오라클 고도화 원리와 해법 2 (bysql.net 2011년 1차 스터디)
- 작성자: 남송휘(tofriend)
- 최초작성일: 2011년 5월 15일
- 본문서는 bysql.net 스터디 결과입니다 .본 문서를 인용하실때는 출처를 밝혀주세요. http://www.bysql.net
- 문서의 잘못된 점이나 질문사항은 본문서에 댓글로 남겨주세요. ^^
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 35 |
1. 옵티마이저
| 휘휘 | 2011.04.17 | 6657 |
| 34 | 3. 옵티마이저의 한계 - P | 휘휘 | 2011.04.17 | 4346 |
| 33 | 2. 옵티마이저 행동에 영향을 미치는 요소 | balto | 2011.04.17 | 6619 |
| 32 | 3. 옵티마이저의 한계 | 휘휘 | 2011.04.19 | 7135 |
| 31 |
4. 통계정보 Ⅰ
| 토시리 | 2011.04.24 | 16773 |
| 30 | 6. 히스토그램 | 오예스 | 2011.04.25 | 18432 |
| 29 | 5. 카디널리티 | 오라클잭 | 2011.04.26 | 13622 |
| 28 |
7. 비용
| balto | 2011.05.01 | 5726 |
| 27 | 8. 통계정보 Ⅱ | AskZZang | 2011.05.04 | 6416 |
| » | 1. 쿼리 변환이란? | 운영자 | 2011.05.16 | 6702 |
| 25 | 3. 뷰 Merging | 오라클잭 | 2011.05.17 | 6515 |
| 24 | 2. 서브쿼리 Unnesting | 토시리 | 2011.05.17 | 2702 |
| 23 |
5. 조건절 이행
| balto | 2011.05.29 | 6021 |
| 22 | 4. 조건절 Pushing | 오예스 | 2011.05.31 | 21692 |
| 21 | 6. 조인 제거 | AskZZang | 2011.06.01 | 6010 |
| 20 | 7. OR-Expansion | AskZZang | 2011.06.01 | 9007 |
| 19 | 12. 기타 쿼리 변환 | 휘휘 | 2011.06.05 | 3805 |
| 18 | 10. 실체화 뷰 쿼리로 재작성 | 오라클잭 | 2011.06.07 | 10576 |
| 17 | 11. 집합 연산을 조인으로 변환 | 오라클잭 | 2011.06.07 | 5594 |
| 16 |
2. 소트를 발생시키는 오퍼레이션
| balto | 2011.06.11 | 5516 |