Я искал в Интернете всю информацию, но не нашел документации по этому поводу. как сделать так, чтобы кеш запросов никогда не истекал?
Насколько я знаю, ответ заключается в том, что вы не можете повлиять на этот аспект кеша запросов MySQL. MySQL сам управляет кешем запросов и по большей части работает хорошо.
Но если бы вы могли, это не должно было иметь особого значения. Включив кеш запросов, вы перешли от MySQL необходимости анализировать и запускать конкретный общий идентичный запрос в 100% случаев к необходимости делать это, скажем, 0,01% времени.
Вы не получите многого, увеличив тайм-аут, потому что это не повлияет на 99,99% идентичных запросов, которые уже хорошо обслуживаются кешем, и единственные, для которых это может иметь значение, - это 0,01% запросы, срок действия кеша которых истек.
Я не знаю об истечении времени в кеше запросов mysql. Насколько мне известно, истечение срока происходит только тогда, когда:
1) Таблица изменена (mysql не проверяет, может ли это повлиять на ваш запрос - каждая вставка / обновление в этой таблице приводит к истечению срока действия всех запросов в этой таблице)
2) Кэш запросов переполнен и старый, а срок действия редко используемых запросов истек.
Итак, я предполагаю, что вы попали в один из этих сценариев. Сообщили ли вы какой-либо конкретный период времени, как долго запрос остается в кеше? Вы можете настроить задание cron, которое периодически запускает запрос, который будет предварительно заполнять кеш. Пока выполняется этот длительный запрос, запросы из Интернета по-прежнему будут использовать кэшированные данные. По завершении он заменит данные в кеше.
Проблема с вашей высокой нагрузкой заключается в том, что по истечении срока действия кэшированных данных многие клиенты одновременно запускают запросы без кеширования. Использование cron для предварительного заполнения кеша гарантирует, что одновременно будет выполняться только один экземпляр тяжелого запроса. Другой подход - выполнить кэширование в веб-приложении и разрешить только одному экземпляру перезагружать фактические данные, в то время как другой будет по-прежнему использовать кешированные данные в течение этого времени ...