튜닝에 대한 질문 드리겠습니다.^^ 0 3 1,937

by 이창헌 [2008.01.17 08:13:33]


초기 파일(init.ora)에 OPTIMIZER_MODE=RULE로 설정 되어 있습니다.

제가 Hint를 사용하여 제가 실행하는 Quary에 PLAN을 CBO(Cost-Based Optimizer)로 변경하여 실행 하는 중에 궁금한 점이 있어 이렇게 질문을 드립니다. 꾸벅^^

 

실행 계획을 단축하여 실행해 보았습니다. 그러나 제가 기대한 속도가 안나와서 "analyze table 테이블명 compute statistics"문을 실행하여 사용한  모든 테이블 분석 정보를 최신 정보로 갱신하였습니다.

 

결과 시간(CBO모드)은 조금 단축하였습니다. 그러나 rule모드로 실행하면 더 빨리 결과가 나옵니다.

 

테이블 구조를 보니 A테이블과 B테이블을 조인할태 A에 있는 기본키와 B에있는 INDEX된 컬럼을 조인합니다. (문제를 B테이블에는 외래키가 없습니다. ) 테이블이 전체적으로 구조가 조금 이상합니다.

 

테이블 구조가 CBO로 실행할 때 많은 영양을 주는지 알고 싶습니다. ^^;

 

by 현 [2008.01.17 00:00:00]
일단 뜬구름 잡기가 될지 모르나,
님께서 올려주신 내용을 토대로 몇가지만 찍어보면..
통계정보는 테이블 뿐만 아니라 인덱스도 생성해 주셔야 합니다.
A의 기본키와 B의 인덱스된컬럼을 조인한다면 인덱스 스캔을 합니다.(물론 여러가지 제약조건들이 있을 수 있지만 그 부분은 생락하고..)
rule 모드로 실행하면 더 빨리 결과가 나온다고 하셨는데,cbo일때 실행계획은 제대로 나오는지 확인 부탁드립니다.

결과적으로 테이블구조가 cbo로 실행할때 많은 영향을 주는지 물으셨는데,
개인적으로는 cbo은 rbo든 테이블 구조는 중요하다고 생각합니다.
잘 만들어진 모델링하나 100튜닝 안부럽다...

by 이창헌 [2008.01.17 00:00:00]
답글 고맙습니다.

cbo일때 실행 계획은 토더에서 제대로 확인이 가능 합니다.

by 웅 [2008.01.17 00:00:00]
rule와 cbo에서 실행계획이 같냐는 의미인것 같은데요...당연히 틀리겠지만요..

이미 있는 실행경로중 최적이라고 판단되는 실행경로를 도출하기 위해 어떤 기준의 옵티마이져를 사용할 것인가하는 건데요. 그기준에 따라 실행경로가 달라져 수행속도 차이가 있을 수 있는거죠.

사용자가 최적의 실행경로를 알고 있다면 rule이나 cbo나 힌트나 사용제한등으로 실행경로를 조정하는 거구요 이것이 튜닝이라고 저는 생각하고 있습니다...

잘만들어진 모델링 100튜닝 안부럽다. 원츄~~^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입