SQL을 SGA에 저장 못하게 하기?? 0 3 1,753

by 지호준 [2007.06.12 14:14:49]


방대한 PL/SQL코드로 데이터를 테스트 하고 있습니다. 입력되는 데이터에 따라 수행 시간이 들쭉 날쭉해 가장 많은 시간이 걸리는 데이터를 가지고 코드를 수정하려고 합니다...

예를 들어 그 데이터 타입이 날짜라고 하고 '2007/06/12'라는 값을 던졌을 때 40초가 걸렸다고 하면 똑같은 쿼리를 실행하면 아시다시피 SGA에 PL/SQL 코드들이 널부러져 있기 때문에 10초 이하의 짧은 시간이 걸립니다. 그러니 코드의 일부분을 손질하고 측정을 해도 아주 일부분이라 시간이 단축되는지 아닌지 그 효과를 알 수가 없습니다.

 

제가 원하는 것은 제가 실행하는 코드들이 SGA에 위치하지 못하도록 하는 것인데요. 이것을 세팅할 수 있는 방법이 있을까요?

 

by finecomp [2007.06.12 00:00:00]
질문의 내용으로 보아 SQL문 자체의 cache보다는 data-cache를 하지 않고 싶다는 내용에 더 가까운 것 같은데요...;
/*+ NOCACHE(table_name) */ 이 힌트로 될려나 모르겠군요...;

SQL성능의 정확한 측정은 실행한 후 초로만 재지 마시고 SQL수정 후 SQL-Trace, tkprof등을 통해 실제로 각 수치들이 줄었는지를 살펴보시길 권장합니다...^^;

건승하시길...수고하세요~~

by 웅 [2007.06.13 00:00:00]
shard pool을 초기화시켜 버리는 방법은 어떨까요?
ALTER SYSTEM FLUSH SHARED_POOL;
테스트서버에다만 하세요~

by TG Spiri [2007.06.14 00:00:00]
아마두 sga_target 셋팅 상황이면
그만큼 shared_pool_size 가 크게 자동 튜닝 되어 있을것으로 예상 되네요..
이것을 강제로 사이즈 다운 하려면 우쩔수 없이
sga_target=0 으로 주시고 일일이 메뉴얼 하게
size 를 셋팅 하셔서 share_pool_size 를 강제로
작제 셋팅 해서, 환경에 의한 page out 을 유도 하는것도 방법이라고 생각되네요 단 복을 복이라는거..
파인님이 언급하신 힌트를 사용하는 것도 하나의 방법이나, 모드 소스를 edit 해야 하는 것이니.. 테스트 서버에서 간단히 테스트 해보시는것두 괜찮을듯싶네요.. page out 이 되면 cpu usage 가 높겠죠 ㅡ_ㅡ;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입