
Предположим, что памяти достаточно,
как MySQL определяет, следует ли извлекать данные из кэша или выполнять повторный запрос?
решение1
Насколько мне известно, срок действия MySQL автоматически истекает, он кэшируется при изменении таблицы (вставка, обновление, удаление и т. д.)
mysql обычно кэширует его сразу же на основе query_cache_limit и размера; по умолчанию query_cache_limit равен 1 МБ, поэтому если отдельный запрос становится больше, он не будет кэшироваться, пока вы не измените его.
Вы должны убедиться, что ваш запрос также является iquals, поскольку он учитывает запросы, чувствительные к регистру.
Кроме того, для мониторинга вы можете использовать следующую команду:
SHOW STATUS LIKE '%qcache%';
Например, создайте таблицу с некоторыми записями и запустите:
SELECT id,name FROM my_table WHERE id > '2'; SHOW STATUS LIKE '%qcache%';
Вы заметите, что количество кэшированных запросов увеличилось на 1, теперь запустите тот же выбор еще раз, и вы увидите, что MySQL уже будет использовать кэш, а результат будет получен намного быстрее.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Сначала вы должны убедиться, что у query-cache-type = 1
вас есть my.cnf или my.ini в зависимости от ОС/УСТАНОВКИ.
Из mysql вы можете выполнить следующую команду, чтобы проверить ее статус:
SHOW VARIABLES LIKE '%query_cache%';
При выводе списка данных вы увидите размер кэша запросов. Если он равен 0, это означает, что кэш запросов отключен. Эта переменная определяет объем памяти в байтах, используемый для кэша запросов.
Итак, как вы это делали для query-cache-type, добавьте следующее в ваш my.cnf или my.ini:
query-cache-size = 40M