메뉴 건너뛰기

bysql.net

1. 쿼리 변환이란?

2011.05.16 09:06

운영자 조회 수:6258


  • 결과가 동일하더라도 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
  • 문서의 잘못된 점이나 질문사항은 본문서에 댓글로 남겨주세요. ^^






번호 제목 글쓴이 날짜 조회 수
35 1. 옵티마이저 file 휘휘 2011.04.18 6062
34 3. 옵티마이저의 한계 - P 휘휘 2011.04.18 3698
33 2. 옵티마이저 행동에 영향을 미치는 요소 balto 2011.04.18 6159
32 3. 옵티마이저의 한계 휘휘 2011.04.19 6698
31 4. 통계정보 Ⅰ file 토시리 2011.04.25 16009
30 6. 히스토그램 오예스 2011.04.25 17372
29 5. 카디널리티 오라클잭 2011.04.27 12917
28 7. 비용 file balto 2011.05.02 4995
27 8. 통계정보 Ⅱ AskZZang 2011.05.04 5913
» 1. 쿼리 변환이란? 운영자 2011.05.16 6258
25 3. 뷰 Merging 오라클잭 2011.05.17 6081
24 2. 서브쿼리 Unnesting 토시리 2011.05.18 2077
23 5. 조건절 이행 file balto 2011.05.30 5464
22 4. 조건절 Pushing 오예스 2011.05.31 17473
21 6. 조인 제거 AskZZang 2011.06.01 5440
20 7. OR-Expansion AskZZang 2011.06.01 8326
19 12. 기타 쿼리 변환 휘휘 2011.06.06 3122
18 10. 실체화 뷰 쿼리로 재작성 오라클잭 2011.06.08 9952
17 11. 집합 연산을 조인으로 변환 오라클잭 2011.06.08 4955
16 2. 소트를 발생시키는 오퍼레이션 file balto 2011.06.12 4847