Назад | Перейти на главную страницу

Почему кеш запросов MySQL отключен по умолчанию?

У меня довольно простой вопрос ...

Почему кеш запросов MySQL отключен по умолчанию?

В большинстве упакованных версий MySQL я встречал значения по умолчанию:

query_cache_type = 1
query_cache_size = 0

Это по существу отключает кеш запросов по умолчанию.

Есть много других буферов и лимитов, для которых установлено разумное значение по умолчанию. Поскольку кеш запросов полностью прозрачен для приложений, почему он отключен?

Я обнаружил, что включаю кеш запросов и журнал медленных запросов автоматически каждый раз, когда я развертываю новый сервер MySQL, поэтому мне просто любопытно узнать логику настроек по умолчанию.

Он не всегда отключен по умолчанию (это зависит от версии и дистрибьютора), но для этого есть веская причина: для производительности не всегда лучше включать кеш запросов, а при больших размерах кеша это может фактически отрицательно сказаться на производительности, так как кеш сокращение (вытеснение менее используемых данных из памяти для освобождения места для новых записей) занимает больше времени. Когда аннулирование и сокращение занимают больше времени, чем выполнение запроса, у вас возникают серьезные проблемы.

Это не панацея для проблем с производительностью. Из Вот:

Кэш запросов отлично подходит для определенных приложений, обычно простых приложений, развернутых в ограниченном масштабе, или приложений, работающих с небольшими наборами данных.

Самая очевидная причина отключения кеша запросов по умолчанию - это то, что дистрибьютор отклоняет потенциальную уязвимость для настройки по умолчанию, которая может вызвать проблемы с производительностью в зависимости от приложения.

Вот хороший учебник по Кэш запросов MySQL