Я пытаюсь настроить сценарий, который будет проверять производительность запросов на сервере mysql разработки. Вот подробности:
- У меня есть root-доступ
- Я единственный пользователь, имеющий доступ к серверу
- В основном интересуется производительностью InnoDB
- Запросы, которые я оптимизирую, - это в основном поисковые запросы (
SELECT ... LIKE '%xy%'
)
Я хочу создать надежную среду тестирования для измерения скорости одного запроса, свободную от зависимостей от других переменных.
До сих пор я использовал SQL_NO_CACHE, но иногда результаты такие тесты также демонстрируют поведение кэширования - для выполнения при первом запуске требуется гораздо больше времени, а для последующих - меньше.
Если кто-то может подробно объяснить это поведение, я могу использовать SQL_NO_CACHE
; Я действительно считаю, что это может быть связано с кешем файловой системы и / или кешированием индексов, используемых для выполнения запроса, так как это сообщение объясняет. Мне не ясно, когда буферный пул и ключевой буфер становятся недействительными или как они могут помешать тестированию.
Итак, если не считать перезапуска сервера mysql, как бы вы порекомендовали настроить среду, которая была бы надежной при определении того, работает ли один запрос лучше, чем другой?
LIKE '%xy%'
будет иметь ужасную производительность. Чтобы определить, работает ли один запрос лучше, чем другой, лучше использовать EXPLAIN. - person Your Common Sense   schedule 03.05.2010