Я пытаюсь протестировать утилиту новой сводной таблицы для моих данных.
Таким образом, я создал две процедуры для выборки данных определенного интервала, каждый использующий различный источник таблицы. Таким образом на моем консольном приложении C# я просто звоню один или другой. Проблема запускается, когда я хочу повторить это несколько раз, чтобы иметь хороший шаблон времени отклика.
Я получил что-то вроде этого: 1199,84,81,81,81,81,82,80,80,81,81,80,81,91,80,80,81,80
Вероятно, моя Oracle 10 г делает несоответствующее кэширование.
Как я могу решить это?
РЕДАКТИРОВАТЬ: См. Эту ветку на asktom , в которой описывается , как и , почему не сделать это.
Если вы находитесь в тестовой среде, вы можете снова перевести свое табличное пространство в автономный и оперативный режим:
ALTER TABLESPACE <tablespace_name> OFFLINE;
ALTER TABLESPACE <tablespace_name> ONLINE;
Или вы можете попробовать
ALTER SYSTEM FLUSH BUFFER_CACHE;
, но снова только в тестовой среде.
Когда вы тестируете свою «настоящую» систему, время, которое вы получаете после первого вызова (те, которые используют кэшированные данные), может быть более интересным, поскольку у вас будут кешированные данные. Вызовите процедуру дважды и учитывайте только результаты производительности, которые вы получите при последующих выполнениях.
Не уверен, есть ли общедоступный/документированный способ сделать это (есть некоторые внутренние функции git, которые вы можете использовать/злоупотреблять в самом источнике git)
Вы могли бы сделать что-то подобное;
if ! git ls-files >& /dev/null; then
echo "not in git"
fi
-121--672223- У меня нет IE6 удобного для тестирования, но фактический тэг может работать в современных браузерах Предпринял пару попыток, чтобы понять, что цвет фона не цвет границы:
hr { width:75%; height:1px; background-color:#ebebeb; border:none; margin:1.5em auto; }
(подстроиться под костюм)
-121--2921290-Вероятно, мой Oracle 10g делает неуместное кэширование.
На самом деле кажется, что Oracle делает совершенно подходящее кэширование. Если эти таблицы будут использоваться много, то вы надеетесь, что они будут в кэше большую часть времени.
edit
В комментарии к ответу Питера Луис сказал, что
flushing перед звонком я получил некоторые интересные результаты, такие как: 1370,354,391,375,352,511,390,375,326,335,435,334,334,328,337,314,417,377,384,367,393.
Эти выводы «интересны», потому что сброс означает, что вызовы занимают немного больше времени, чем когда строки находятся в кэше БД, но не так долго, как первый вызов. Это почти наверняка связано с тем, что сервер сохранил физические записи в своем физическом кэше. Единственный способ избежать этого для истинного запуска с пустым кэшем - перезагрузить сервер перед каждым тестом.
Также можно научиться правильно настраивать запросы. Понимание работы базы данных является хорошим началом. И ОБЪЯСНИТЕ ПЛАН - это лучшее средство настройки, чем настенные часы. Подробнее.