- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/display/CORE/Cost+Based+Query+Transformation?
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.
Cost Based Query Transfomation
10g는 공식적으로 RBO가 지원되지 않는다.
통계정보관리자가 자동으로 추가되었다.
CBQT가 추가되었다.
Transformation 단계도 COST기반으로 동작한다.
|기본 개념|
CBQT는 COST가 더 저렴할때만 Transformation을 수행하는 방식을 사용한다.
10053 Event를 이용하면 CBQT에 의해 어떤일이 일어나는지 알 수 있다.
동작원리
- Transformation 단계에서는 Transformation을 위해 COST 계산을 수행할 지 여부만 결정
- Optimization단계에서 Transformation이 이루어진 경우와 이루어 지지 않은 경우의 Cost를 모두 계산해서 비교한다.
- Transformation에 의해 Cost가 개선될때만 실제 Transformation을 수행한다.
|CBQT의 문제점|
- Optimization(Hard Parse)의 Overhead가 증가한다. 이것이 Oracle의 Bug와 맞물리면 과도한 parse time의 증가를 가져온다.
- Cost 자체의 한계점을 그대로 지니고 있다. cost가 낮아도 성능이 좋지 않은 경우가 있으며, 이는 Oracle의 Cost Model자체가 현실을 100% 반영하고 있지 못하기 때문에 발생하는 당연한 현상이다. CBQT에서도 동일한 문제가 있다. Cost가 높다고 해서 실제 성능이 나쁘다는것을 장담 할 수 없다.
|CBQT 제어하기|
_OPTIMIZER_COST_BASED_TRANFORMATION : CBQT의 동작여부를 지정한다.(Default : 활성)
Cost Based Subquery Unnesting, Cost Based Complex View Mersing, Cost Based Join Predicate Pushing등을 모두 제어할 수 있다.
_OPTIMIZER_PUSH_PRED_COST_BASED: Cost Based Join Predicate Pushing의 동작여부를 지정한다. (Default:True)
_OPTIMIZER_CONNECT_BY_COST_BASED : Cost Based Connect By Transformastion의 동작여부 지정 (Default : True)
Query Transformation을 제어하는 Hint(Hint가 Parameter보다 우선한다.)
UNNEST/NO_NUNEST : Subquery Unnesting 제어
PUSH_SUBQ/NO_PUSH_SUBQ : Subquery Pushing제어
MERGE/NO_MERGE : View Mersing제어
PUSH_PRED/NO_PUSH_PRED : Join Predicate Pushing제어
NO_QUERY_TRANSFORMATION : 모든 종류의 Query Transformation 비활성화
OPT_PARAM : Optimizer Parameter를 Query Level에 지정
문서에 대하여
- 최초작성자 : 임채영
- 최초작성일 : 2009년 3월 23일
- 이 문서는 오라클클럽 코어 오라클 데이터베이스 스터디 모임에서 작성하였습니다.
- 이 문서의 내용은 조동욱님의 'Optimizing Oracle Optimizer'을 참고하였습니다.
문서정보
- 이 문서는 구루비에서 작성하였습니다.
- 이 문서를 다른 블로그나 홈페이지에 게재하실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 출처 : http://wiki.gurubee.net/display/CORE/Cost+Based+Query+Transformation?
- 구루비 지식창고의 모든 문서는 크리에이티브 커먼즈의 저작자표시-비영리-동일조건변경허락(BY-NC-SA) 라이선스에 따라 자유롭게 사용할 수 있습니다.