2010-01-27 5 views
28

Oracle 데이터베이스에서 SQL 쿼리를 조정합니다. 오해의 소지가있는 성능 결과를 방지하기 위해 각 쿼리를 실행하기 전에 캐시 된 항목이 모두 지워지도록하고 싶습니다. 내가 공유 풀을 취소 (캐시 SQL 없애/계획을 설명) 및 버퍼 캐시 (캐시 된 데이터를 제거하는) 다음 명령을 실행하여 자세한 내가 일을해야Oracle에서 캐시 된 모든 항목을 지우는 방법

alter system flush buffer_cache; 
alter system flush shared_pool; 

가 거기를, 또는 이것으로 충분합니까?

감사합니다.

답변

3

당신은 또한 통계를 수집한다을 - 중

begin 
    dbms_stats.gather_schema_stats('schema_name'); 
end; 

또는

begin 
    dbms_stats.gather_database_stats; 
end; 
: 당신의 스키마 또는 전체 데이터베이스에 대한

그런 다음 공유 풀을 지 웁니다.

4

운영 체제와 하드웨어도 캐싱을 수행하므로 결과가 왜곡 될 수 있습니다.

+1

그래, 그건 분명히 버퍼 캐시를 지운 후에도 쿼리가 평소보다 빠르게 실행될 때 궁금해하는 것입니다. 팁 고마워! –

1

이 모든 캐시를 지웠으므로 사용자가 오해의 소지가있는 결과 인 을 표시하게됩니다. 현실 세계의 데이터베이스는 한 번만 그 상태에 있습니다. 실제로 성능 테스트를 수행 할 때 캐싱 (및 기타 최적화)의 이점을 볼 수 있도록 쿼리를 여러 번 실행하는 것이 일반적으로 용인되는 방법입니다.

관련 문제