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

by 구루비스터디 쿼리변환 [2018.04.01]


  1. 쿼리 변환이란?
  2. 쿼리 변환의 종류
  3. 쿼리 변환의 방식


쿼리 변환이란?

  • 쿼리 변환(Query Transformation)은 쿼리 옵티마이저가 SQL을 분석해 의미적으로 동일(-> 같은 결과를 리턴)하면서도 더 나은 성능이 기대되는 형태로 재작성하는 것을 말한다.
  • '논리적 최적화(Logical Optimization)'라고도 하며, 그 이후의 단계를 '물리적 최적화(Physical Optimization)'라고 부르기도 한다.


오라클 버전에 따른 쿼리 변환의 변화
버전내용
8i복합 뷰(Complex View) Merging 을 사용자 힌트에 의해서만 수행
9i결과가 보장될 수 있는 형태라면 무조건 변환 시도
10gCBO 모드로 동작하기 시작 (쿼리 변환의 결과가 더 나은 성능을 낼 것으로 판단될 때만 수행)


쿼리 변환의 종류

  1. 서브쿼리 Unnesting
  2. 뷰 Merging
  3. 조건절 Pushing
  4. 조건절 이행
  5. 공통 표현식 제거
  6. Outer 조인을 Inner 조인으로 변환
  7. 실체화 뷰 쿼리로 재작성
  8. Star 변환
  9. Outer 조인 뷰에 대한 조인 조건 Pushdown
  10. OR-expansion


쿼리 변환의 방식

  • 휴리스틱(Heuristic) 쿼리 변환 : 결과만 보장된다면 무조건 쿼리 변환 수행.
  • 비용기반(Cost-based) 쿼리 변환 : 변환된 쿼리의 비용이 더 낮을 때만 사용, 그렇지 않으면 원본 쿼리 그대로 최적화 수행.
버전내용
9i1~6 휴리스틱 쿼리 변환에 해당. 나머지 비용기반 쿼리 변환에 해당
10g1 서브쿼리 Unnesting , 2 뷰 Merging, 3 조건절 Pushing 중 조인 조건 Pushdown도 비용기반으로 전환되었음
"구루비 데이터베이스 스터디모임" 에서 2012년에 "오라클 성능 고도화 원리와 해법 II " 도서를 스터디하면서 정리한 내용 입니다.

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

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

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

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