메뉴 건너뛰기

bysql.net

1. 쿼리 변환이란?

2011.05.02 08:06

실천하자 조회 수:4923

1. 쿼리변환


- C.J. Data 박사의 'An Introduction to Database System' 저서에서 

   간단한 SQL 하나를 52개의 다른 SQL문으로 표현이 가능한 것을 보여줌


- 결과는 동일하여도 SQL을 어떻게 작성하느냐에따라 성능에 차이 발생

   → 결과는 같지만 수행 속도의 차이 발생 (전제조건 : 쿼리 변환 작동 X)


- 애초 가장 좋은 성능 형태의 쿼리를 작성하면 좋지만 현실적으로 많지 않음

   → (쿼리 최적화 원리를 잘 아는 개발자가 흔치 않음)


- 최근 비용기반 옵티마이저는 사용자 SQL을 최적화에 유리한 형태로 재작성 작업을 우선 처리함


- Query Transformer 담당



  • 쿼리변환(Query Transformer)이란?
    • 쿼리 옵티마이저가 SQL을 분석하여 의미적으로 동일하면서도 더 나은 성능이 기대되는 형태로 재작성하는 것
    • 쿼리변환 종류

    1. 서브쿼리 Unnesting
    2. 뷰 Merging
    3. 조건절 Pushing
    4. 조건절 이행
    5. 공통 표현식 제거
    6. Outer 조인을 Inner 조인으로 변환
    7. 실체화 뷰 쿼리로 재작성
    8. Start 변환
    9. Outer 조인 뷰에 대한 조인 조건 Pushdown
    10. OR-expansion
    • 쿼리변환 방식
      • 휴리스틱(Heuristic) 쿼리 변환
        • 항상 더 나은 성능을 보일 것이라는 쿼리변환으로 일종의 규칙 기반 최적화 기법으로 볼 수 있음
        • 9i 기준 (1 ~ 6번 해당)
        • 10g 기준 (3번의 부분과, 4~6번 해당) : 변환 쿼리가 항상 더 나은 성능 제공으로 비용기반 전환 필요 X
      • 비용기반(Cost-Based) 쿼리 변환
        • 변화된 쿼리의 비용이 더 낮을 때만 사용하고 그렇지 않을 경우 원본 쿼리 그대로 최적화 수행
        • 10g 부터 필요한 부분에 대해선 비용기반으로 개선 됨



  • 오라클 고도화 원리와 해법 2 (bysql.net 2011년 1차 스터디)
  • 작성자: 위충환 (실천하자)
  • 최초작성일: 2011년 05월 01 일
  • 본문서는 bysql.net 스터디 결과입니다 .본 문서를 인용하실때는 출처를 밝혀주세요. http://www.bysql.net
  • 문서의 잘못된 점이나 질문사항은 본 문서에 댓글로 남겨주세요. ^^