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

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

alter system flush buffer_cache;
alter system flush shared_pool;

Есть ли больше, я должен делать, или действительно ли это достаточно?

Спасибо!

35
задан Kevin Babcock 27 January 2010 в 14:11
поделиться

3 ответа

Промывка общего пула должно сделать это, но Том Китай перечисляет пару причин ниже, почему вы не можете получить результат, который вы ожидаете в некоторых случаях:

http://asktom.orcle.com/pls/asktom/ F? P = 100: 11: 0 :::: p11_question_id: 6349391411093

8
ответ дан 27 November 2019 в 15:47
поделиться

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

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

или

begin
   dbms_stats.gather_database_stats;
end;

, а затем очистить общее пул.

3
ответ дан 27 November 2019 в 15:47
поделиться

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

4
ответ дан 27 November 2019 в 15:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: