Подтвердить что ты не робот

Как очистить все кэшированные элементы в Oracle

Я настраиваю SQL-запросы в базе данных Oracle. Я хочу, чтобы все кешированные элементы были очищены перед запуском каждого запроса, чтобы предотвратить ввод в заблуждение результатов работы. Я очищаю общий пул (чтобы избавиться от кэшированных планов SQL/объяснения) и буферного кеша (чтобы избавиться от кэшированных данных), выполнив следующие команды:

alter system flush buffer_cache;
alter system flush shared_pool;

Я должен делать больше, или это достаточно?

Спасибо!

4b9b3361

Ответ 2

Имейте в виду, что операционная система и аппаратное обеспечение также кэшируют, что может исказить результаты.

Ответ 3

Вы также должны собирать статистику - либо для своих схем, либо даже для всей базы данных:

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

или

begin
   dbms_stats.gather_database_stats;
end;

Затем очистите общий пул.

Ответ 4

Я бы утверждал, что вы представляете вводящий в заблуждение результат , потому что вы очистили все кеши. База данных в реальном мире только когда-либо в этом состоянии раз в жизни. Фактически, при тестировании производительности обычно принято принимать несколько запросов, чтобы вы могли видеть преимущества кеширования (и других оптимизаций).