Задавайте вопросы, мы ответим
Вы не зашли.
Несколько дополнений к статье Кэширование запросов в MySQL
1.
Ряд запросов не подлежит кэшированию:
Запросы, использующие значения локальных переменных.
Запросы, обращающиеся к базам данных mysql или INFORMATION_SCHEMA.
Точнее будет:
Запросы, использующие значения пользовательских или локальных переменных.
Запросы, обращающиеся к базам данных mysql, INFORMATION_SCHEMA или performance_schema.
Начиная с версии MySQL 5.6.5, запросы, содержащие таблицы, разбитые на партиции.
2. Относительно параметра query_cache_wlock_invalidate стоит указать, что значение по умолчанию OFF приводит к тому, что из кэша читаются данные из MyISAM таблиц, которые заблокированы другим соединением.
Кстати,
http://dev.mysql.com/doc/refman/5.6/en/query-cache-operation.html написал:
In MySQL 5.6, the result from a SELECT query on a view is cached.
Неактивен
Спасибо за комментарии, внес поправки в статью.
Про партиции точнее будет: начиная с MySQL версий 5.1.63, 5.5.23, 5.6.5.
Про VIEW добавил - это во всех версиях. Про query_cache_wlock_invalidate добавил blockquote
Неактивен
query cache для paritioned таблиц - это они багу так пофиксили:
http://bugs.mysql.com/bug.php?id=53775
Неактивен
После включения кэш работает автоматически:
При каждом запросе типа SELECT вычисляет хэш-сумму строки запроса и ищет ее в кэше. Если находит - возвращает рузельтат из кэша, если нет - выполняет запрос, а результат заносит в кэш (если результат не больше значения query_cache_limit).
При каждом запросе типа UPDATE, REPLACE, INSERT, DELETE, TRUNCATE или ALTER, удаляет из кэша все запросы, использующие таблицу, подвергшуюся обновлению.
Имхо, стоит подчеркнуть, что это накладные расходы и включение кэша может ухудшить производительность.
Например, у меня после первого прочтения статьи сложилось впечатление, что про расходы в ней ничего не сказано.
Мерой эффективности кэша может служить отношение Qcache_hits / (Qcache_inserts + Qcache_not_cached).
Здесь стоит расширить:
а) какое значение можно считать достаточным?
б) с чем связано низкое значение? Можеть быть просто мало памяти выделено под кэш и запросы из него постоянно вытесняются.
в) данное отношение показывает неполную картину. Например, есть несколько часто обновляемых таблиц, по которым не идет выборка (логи). Тем не менее каждое изменение требует обращения к кэшу - нужно ли из него удалять запросы. Показатель эффективности кэша может быть отличным, а производительность упадет.
Неактивен
>> Имхо, стоит подчеркнуть, что это накладные расходы и включение кэша может ухудшить производительность.
Мне кажется, что начинающие с этим вряд ли столкнутся. Добавил blockquote, но не уверен, что посыл статьи станет понятнее. Те, кому нужна такая информация - не читатели базовой статьи про кэш.
>> Здесь стоит расширить:
>> а) какое значение можно считать достаточным?
на эти вопросы нет однозначного ответа, поэтому пусть будет домашним заданием для внимательного читателя
Неактивен