У меня есть медленный запрос MySQL в моем приложении, которое я должен переписать. Проблема, это только медленно на моем рабочем сервере и только когда это не кэшируется. В первый раз, когда я выполняю его, потребуется 12 секунд, затем каждый раз, когда после этого это будут 500 миллисекунд.
Существует ли простой способ протестировать этот запрос без него поражающий кэш запроса, таким образом, я вижу результаты своего рефакторинга?
Спасибо!
MySQL поддерживает предотвращение кеширования одиночных запросов. Попробуйте
SELECT SQL_NO_CACHE field_a, field_b FROM table;
, или вы можете разбить кеш запросов для текущего сеанса:
SET SESSION query_cache_type = OFF;
Чтобы добавить к хорошему ответу Йоханнеса, я делаю
СБРОСИТЬ КЭШ ЗАПРОСОВ;
У этого есть небольшое дополнительное преимущество: не требующие внесения каких-либо изменений либо в выполняемые мной операторы, либо в соединение.
Тривиальная вещь, которую нужно сделать, - это каким-то образом изменить оператор, который вы выполняете, например, поместить случайное число в комментарий, потому что запросы находятся в кэше только в том случае, если они идентичны по байтам некоторому предыдущему запросу.