programing

Oracle에서 캐시된 모든 항목을 지우는 방법

mytipbox 2023. 3. 4. 13:56
반응형

Oracle에서 캐시된 모든 항목을 지우는 방법

Oracle 데이터베이스에서 SQL 쿼리를 튜닝하고 있습니다.잘못된 성능 결과를 방지하기 위해 각 쿼리를 실행하기 전에 캐시된 모든 항목을 지우고 싶습니다.다음 명령을 실행하여 공유 풀(캐시된 SQL/설명 계획 제거)과 버퍼 캐시(캐시된 데이터 제거)를 지웁니다.

alter system flush buffer_cache;
alter system flush shared_pool;

제가 해야 할 일이 더 있나요, 아니면 이 정도면 충분한가요?

감사합니다!

공유 풀을 플러시하면 충분하지만 Tom Kyte는 다음과 같은 몇 가지 이유를 제시합니다.

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:6349391411093

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

스키마 또는 전체 데이터베이스에 대한 통계도 수집해야 합니다.

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

또는

begin
   dbms_stats.gather_database_stats;
end;

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

캐시를 모두 클리어했기 때문에 잘못된 결과를 나타내고 있다고 생각합니다.현실 세계의 데이터베이스는 일생에 단 한 번 그런 상태가 됩니다.실제로 성능 테스트에서는 일반적으로 캐싱(및 기타 최적화)의 이점을 확인할 수 있도록 쿼리를 여러 번 실행하는 것이 일반적입니다.

언급URL : https://stackoverflow.com/questions/2147456/how-to-clear-all-cached-items-in-oracle

반응형