Кэш запросов к бд MySQL - позволяет ускорить работу с базой данных за счет использования кэширования.
И как вы думаете почему на большинстве хостингов оно вообще отключено?))
Итак в бд вводим запрос для проверки работает ли кэш вообще в вашей бд
show variables like 'have_query_cache';Если в таблице будет
Yes то значит работает!
(как это сделать на серверах Ubuntu смотрите тут
https://www.8host.com/blog/optimizaciya-raboty-mysql-s-pomoshhyu-kesha-zaprosov-v-ubuntu-18-04/)
Настройка кэширования - эти параметры можно определить командой:
show variables like 'query_cache_%' ;+------------------------------+----------+
| Variable_name | Value |
+------------------------------+----------+
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 16777216 |
| query_cache_type | OFF |
| query_cache_wlock_invalidate | OFF |
+------------------------------+----------+
5 rows in set (0.00 sec)
выйдет что то такое, где
Значение
query_cache_limit определяет максимальный размер отдельных результатов запроса, которые могут быть кэшированы. Значение по умолчанию составляет 1 048 576 байт, что эквивалентно 1 МБ.
MySQL не обрабатывает кэшированные данные целиком; он обрабатывает их блоками. Минимальный объем памяти, выделяемый каждому блоку, определяется переменной
query_cache_min_res_unit. Значение по умолчанию составляет 4096 байт, или 4 КБ.
Переменная
query_cache_size контролирует общий объем памяти, выделенной для кэша запросов. Если в ней установлено значение 0, это означает, что кэш запросов отключен. В большинстве случаев по умолчанию может быть установлено значение 16 777 216 (около 16 МБ). Кроме того, следует иметь в виду, что query_cache_size требует как минимум 40 КБ для размещения своих структур. Выделенное здесь значение выравнивается по ближайшему 1024-байтовому блоку – то есть фактическое значение может немного отличаться от установленного вами.
MySQL определяет запросы к кэшу, изучая переменную
query_cache_type. Значение 0 или OFF отключает кэширование или извлечение кэшированных запросов. Вы также можете установить значение 1, чтобы включить кэширование для всех запросов, кроме тех, которые начинаются с SELECT SQL_NO_CACHE. Значение 2 позволяет кэшировать только те запросы, которые начинаются с SELECT SQL_CACHE.
Переменная query_cache_wlock_invalidate решает, должен ли MySQL извлекать результаты из кэша, если используемая в запросе таблица заблокирована. Ее значением по умолчанию является OFF.
--
query_cache_limit - не кэшировать результаты, большие, чем указано (по умолчанию 1Мб).
query_cache_size - память, выделенная для хранения результатов старых запросов. Если равно 0, то кэширование запроса блокируется (по умолчанию).
query_cache_startup_type - можно установить следующие (только числовые) значения:
Опция Описание
0 OFF (``ВЫКЛЮЧЕНО''), результаты не кэшировать и не извлекать
1 ON (``ВКЛЮЧЕНО''), кэшировать все результаты, за исключением запросов SELECT SQL_NO_CACHE ...
2 DEMAND (``ПО ТРЕБОВАНИЮ''), кэшировать только запросы SELECT SQL_CACHE ...
Внутри потока (соединения) можно изменить функционирование кэша запросов по сравнению с установленным по умолчанию. Синтаксис следующий:
SQL_QUERY_CACHE_TYPE = OFF | ON | DEMAND
SQL_QUERY_CACHE_TYPE = 0 | 1 | 2
Опция Описание
0 или OFF Результаты не кэшировать и не извлекать.
1 или ON Кэшировать все результаты за исключением запросов SELECT SQL_NO_CACHE ...
2 или DEMAND Кэшировать только запросы SELECT SQL_CACHE ...
По умолчанию выражение SQL_QUERY_CACHE_TYPE зависит от величины переменной query_cache_startup_type, установленной при создании данного потока.