DB버전 바뀌고 SELECT문 속도 느려짐 0 7 2,811

by 이예진 [Oracle Tuning] [2010.09.14 09:11:56]


8i DB에서 9i DB로 바꾸고 난뒤
동일 쿼리문장의 속도가 느려지네요.
8i는 옵티마이져가 rule베이스였지만, 9i에는 cost베이스만 사용기 때문인데요.
동일 쿼리문장의 실행계획이 다르게 나옵니다.
옵티마이져에게 맡기기에는 속도가 너무 안나오네요.
더 빨라져야 하는데 더 느려지니, 쿼리문장에 hint를 써서라도 8i 때의 실행계획이 나오도록 작업을 해줘야할지
아님 다른 방법이 있는지 의견을 듣고자 합니다.
참고하여 반영하도록 하겠습니다.
by 현 [2010.09.14 09:26:12]
일단 통계정보는 수집하셨나요?
통계정보를 수집하시고 그래도 실행계획이 원하는대로 안잡히면 힌트를 써야죠.

by 나그네 [2010.09.14 09:50:38]
Optimizer Mode를 Rule로 바꾸면 되지 않을런지?

by 현 [2010.09.14 10:01:50]
Optimizer Mode를 Rule로 바꾸거나 choose로 바꾸면 지금 그 현상은 해결이 되겠지만 근본적인 해결은 아닌듯 싶습니다.
어차피 운영db를 바꿨으리라 생각은 되질 않으니 개발db에서 cbo,choose 모드에서 충분히 테스트 하시고 운영으로 옮기시길 권해 드립니다.

by 知音 [2010.09.14 12:15:43]
analyze 를 통해서 통계정보를 재생성하는 것이 맞을 듯 하네요..

by 지나가는 이 [2010.09.14 18:18:23]
저도 현님과 같은 생각 ^^
RBO보다는 CBO로 가야 하는게 당연한 말씀인거 같습니다.
또한 통계정보를 재생성하는것도... ^^;
또한 현재 8i에서 사용하던 SQL문장도 문제가 있는건 아닐까요??
조인되는 컬럼이라든지, 드라이빙이 먼저 되는 테이블이라던지...
실행계획을 보시고 또는 Trace를 떠서 (실행계획과 실제로 실행되는 Trace의 SQL문은 다를수 있기때문에...^^) 올바른 SQL문을 작성하는것이 정답인걸로 생각이 드네요..

by 이예진 [2010.09.14 18:20:39]
통계정보는 재성성 했지만, 속도에 진전이 없었습니다.

by 이예진 [2010.09.14 18:25:55]
^^
데이터의 분포도가 다른 유저에 각각 동일 SQL문장을 적용하면
유저마다 속도가 느린것도 있고 괜찮은 것도 있고 그렇습니다.
SQL문장을 다시 보아야겠습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입