Время выполнения произвольного запроса в тестовом примере

0

Я тестирую метод с довольно большим sql-запросом. У меня около 15 объединений, один подзапрос с двумя объединениями, поэтому он сложный. Но каждый бег занимает различное время. Однажды это 4 секунды, иногда 80 или даже 200 секунд. Он стандартный unit test, с подготовкой данных с FactoryGirl, и данные всегда одинаковы.

Есть ли какие-либо профилировщики mysql, параметры mysql или другие инструменты, которые могут показаться для меня, почему существуют большие различия во времени выполнения? Как это понять?

Теги:
unit-testing
tdd

1 ответ

1

Хорошая вероятность того, что MySQL кэширует результаты некоторых подзапросов и/или объединений, что будет легко учитывать изменения, которые вы видите в ответном времени.

Что касается профайлера, то при выполнении google для "mysql profiler" появился эта ссылка, а также предыдущий вопрос здесь, на SO, задавая тот же вопрос.

  • 0
    в SELECT есть SQL_NO_CACHE, и первый запуск может занять 2 секунды, а второй - 150 секунд ....
  • 1
    Также попробуйте встроенный EXPLAIN . Просто поместите EXPLAIN перед вашим запросом, и он даст вам некоторое представление о том, как mysql собирается собирать ваши данные.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню