На DEV сервере часто занимаюсь оптимизацией запросов и меня не устраивает тот момент, что первый раз выполняю запрос и у меня например 90ms, а при повторе 50ms, потом может то быстрее то медленнее, в общем, у нас сервер MySQL кеширует запросы для ускорения повторных выборок.
Для решения этой ситуации, вводящей в заблуждение, я отключаю кеширование в mysql.
Чтобы проверить состояние текущих настроек - можно или в phpmyadmin зайти в раздел переменные и там через ctrl+f поискать нужное среди кучи вариантов, либо же ввести запрос
SHOW VARIABLES LIKE "query_cache%"
Поставим query_cache_size на 0 и query_cache_limit тоже
SET GLOBAL query_cache_size=0;
SET GLOBAL query_cache_limit=0;
Но после перезапуска сервера это вернется обратно, тут или вот так выключать каждый раз, ну а можно прописать эти параметры в my.cnf
query_cache_limit = 0
query_cache_size = 0
Но в последних версиях, уже вроде бы в 5.7 кеш по умолчанию выключен, поэтому там еще и query_cache_type=OFF
на рабочем сервере при достаточном объеме оперативки лучше включить данным методом... А вот на MariaDB кеширование включено, вероятно что в некоторых дистрибутивах mysql сервер будет со своими конфигами, поэтому выключение кеша актуально.
Еще один момент, если вам просто нужно обкатать некоторые запросы и оптимизировать их по времени, то можно просто добавить после SELECT SQL_NO_CACHE
, но когда у вас движок и вы не вникая в запросы хотите посмотреть на каких страницах какое время генерации и только потом залезать в запросы, то выключение кеша через настройки БД будет лучшим решением, конечно, на продакшн такое не делайте...