오라클 성능 고도화 원리와 해법 II (2016년)
쿼리 변환이란? 0 0 2,945

by 구루비 쿼리변환 [2017.05.27]


01.쿼리 변환이란?

  • 하나의 쿼리는 여러가지 형태로 표현될 수 있다.
  • 각각의 쿼리의 결과가 동일하더라도 수행 속도는 다를 수 있다.
  • 쿼리 변환이란 쿼리 옵티마이저가 SQL을 분석해 의미적으로 동일하면서도 더 나은 성능이 기대되는 형태로 재작성하는 것을 말한다.
  • Query Transformer가 역할 수행, '논리적 최적화'라 부리기도 한다.

  • DMBS 버전이 올라갈 수록 쿼리 변환의 종류도 다양해지고 적극적으로 쿼리 변환을 시도하고 있다.
    • 오라클 8i - 복합뷰 머징을 사용자 힌트에 의해서 소극적으로 수행하다가 9i에서 결과가 보장된다면 무조건 변환하게 되었다.
    • 10g부터는 좀 더 완벽한 CBO 모드로 동작하기 시작하였다.(더 나은 성능을 낼 것으로 판단될 때 복합뷰머징 사용)
  • 쿼리 변환의 종류
    • 1.서브쿼리 Unnesting
    • 2.뷰 Merging
    • 3.조건절 Pushing
    • 4.조건절 이행
    • 5.공통 표현식 제거
    • 6.Outer 조인을 Inner 조인으로 변환
    • 7.실체화뷰 쿼리로 재작성
    • 8.Star 변환
    • 9.Outer 조인 뷰에 대한 조인 조건 Pushdown
    • 10.OR-expansion
  • 작동방식
    • 휴리스틱(Heuristic) 쿼리변환 : 결과만 보장된다면 무조건 쿼리 변환 수행, 일종의 규칙기반 최적화 기법(1~6번)
    • 비용기반(Cost-based) 쿼리변환 : 변환된 쿼리의 비용이 더 낮을 때만 쿼리변환 시도(7~10번)
"구루비 주주클럽 스터디모임" 에서 2016년에 "오라클 성능 고도화 원리와 해법 II " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3357

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입