메뉴 건너뛰기

bysql.net

1.3 Query Transformation의 개념

2011.08.29 05:55

AskZZang 조회 수:4182

1.3 Query Transformation의 개념

 

Query Transformation Transformer의 기능이며 개발자가 작성한 SQL을 옵티마이저가 다른 모습으로 재작성하는 것으로 정의.

 

옵티마이져가 SQL을 재작성하는 목적과 원칙, 원리 등을 알아보자.

 

SQL을 재작성하는 옵티마이져의 목적

첫째도 성능향상!! 둘째도 성능향상!!

ð  Query Transformation은 성능향상이 그만큼 중요하다는 의미이다.

ð  옵티마이져는 SQL을 재작성하여 성능이 저하되는 경우 SQL을 재작성하지 않는다.

ð  사실 성능의 향상은 목적이기 이전에 옵티마이져의 존재 이유이다.

 

SQL을 재작성하는 옵티마이져의 원칙

변화된 SQL은 논리적으로 원본의 SQL과 의미하는 바가 같아야 한다.’

ð  너무도 당연한 원칙이다. 성능을 빠르게 한답시고 원본 SQL의 결과와 재작성된 SQL의 결과가 다르면 안된다.

 

SQL을 재작성하는 옵티마이져의 원리

1.     Rule 기반의 원리

뻔한 것을 Rule로 정할 수 있다.

) ‘불필요한 Distinct는 제거하라’ => Distinct가 불필요한 SQL도 많이 있는데 이럴 경우

옵티마이져는 과감히 Distinct를 삭제해 버린다.

2.     Cost 기반의 원리

모든 SQL의 재작성 원리를 Rule Cover 할 수 있다면 좋겠지만 현실적으로 여러 가지 복잡한 문제들이 있으므로 그렇지 못하다.

 

Cost Based Query Transformer Cost Estimator를 이용한다.

:  Cost EstimatorSQL을 던져주면 Cost Return하는 옵티마이져의 중요한 구성요소.

  Cost 기반으로 SQL을 재작성 할 경우 Logical Optimizer Cost Estimator를 이용하여

원본 SQL과 재작성된 SQL Cost를 비교하여 저렴한 쪽을 선택.

 

시작이 반이다.

앞으로 나올 모든 Query Transformation의 이야기들은 위에서 이야기한 목적, 원칙 그리고 원리에 충실하다. 우리는 세 가지(목적, 원칙, 원리)를 큰 그림으로 이해 하였다.