Я обычно не рекомендую использовать кеш запросов MySQL. В теории это звучит великолепно, но, к сожалению, не является большой победой для эффективного кэширования, потому что доступ к нему по запросам регулируется мьютексом. Это означает, что многие параллельные запросы выстраиваются в очередь, чтобы получить доступ к кешу запросов, и это вредит больше, чем помогает, если у вас много одновременных клиентов.
Это даже вредит INSERT / UPDATE / DELETE, даже если эти запросы не имеют наборов результатов, потому что они удаляют результаты запроса из кэша запросов, если обновляют те же таблицы. И эта чистка подлежит той же очереди в мьютексе.
Лучшая стратегия - использовать memcached для масштабируемого кэширования конкретных результатов запроса, но для этого необходимо подумать о том, что вы хотите кэшировать, и написать код приложения для доступа к memcached и вернуться к MySQL, если данные отсутствуют. в кеше. Это больше работы, но если вы все сделаете правильно, это даст лучшие результаты.
См. TANSTAAFL .