에고 어떻게 설명드려야 할지 모르겠지만
select 문 기준 10초정도 걸리는 쿼리가 있습니다.
예를들어 일주일동안 한번도 조회이벤트가 없다가 어떠다 조회하면 1분가량 걸리네요
그 1분가량 걸린 후 바로 다시 조회하면 10초.. 몇시간텀은 10초.. 몇일텀인경우 다시 1분..
개념 및 이런경우 어떻게 대처 해야 하는지 설명 좀 부탁드릴게요~ ^^
먼저 님에 쿼리를 실행 해서 빠르게 만든 상태에서
alter system flush shared_pool;
후 다시 쿼리실행해서
1.늦어진다면
result_cache 힌트사용
예)select /*+ result_cache */ deptno, avg(sal) from emp group by deptno;
또는 11g아래는 쿼리문을 프로시져(return타입 ref )로 변경후 해당 프로시져 keep DBMS_SHARED_POOL.KEEP('procedurename','P')
2.그렇지않고 똑같이 빠르면
ALTER SYSTEM FLUSH BUFFER_CACHE; 또는 오라클 재실행 후 다시 쿼리실행해서
늦어진다면 관련테이블을 BUFFER KEEP
alter table 'tablename' storage (buffer_pool keep);
해보신 후 확인해보세요
참고사항입니다
http://docs.oracle.com/cd/B28359_01/server.111/b28274/memory.htm#BGBBIACC
http://www.morganslibrary.org/reference/pkgs/dbms_shared_pool.html
https://community.oracle.com/thread/479144