Thank you for reading this post, don't forget to subscribe!
Эта настройка определяет количество памяти, которое Mysql выделит на кеш запросов. Кеш работает таким образом:
- Mysql получает запрос и проверяет наличие его результата в кеше. Если данные есть, возвращает ответ.
- Если данных нет, запрос выполняется и сохраняется в кеш.
- Если таблица изменяется (любая из операций INSERT / UPDATE / DELETE) весь кеш таблицы чистится.
Это значит, что:
- Эту настройку лучше использовать только тогда, когда имеет место большое количество чтений и небольшое количество записей (100 чтений на 1 запись).
- Отключение этой настройки и использование индексов для получения высокой производительности более приемлемый вариант.
Если же вы решите использовать, сразу определяйте оба параметра (устанавливается в my.cnf):
1 2 |
query_cache_limit = 1M query_cache_size = 8M |
# Установка размера кеша запросов и ограничения кеша на один запрос
Не используйте значения более 100…200Мб, т.к. с увеличением этого значения, производительность Mysql деградирует.
Для проверки состояние включения этого параметра, используйте запрос:
1 |
mysql> SHOW VARIABLES LIKE 'have_query_cache' |
1 2 3 4 5 |
+------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | <b>YES</b> | +------------------+-------+ |
# Кеш включен
Для мониторинга:
1 |
mysql> show status like '%Qcache%'; |
1 2 3 4 5 6 7 8 9 10 11 12 |
+-------------------------+---------+ | Variable_name | Value | +-------------------------+---------+ | Qcache_free_blocks | 165 | | Qcache_free_memory | 3893664 | | Qcache_hits | 4654886 | | Qcache_inserts | 352314 | | Qcache_lowmem_prunes | 301 | | Qcache_not_cached | 66691 | | Qcache_queries_in_cache | 147 | | Qcache_total_blocks | 469 | +-------------------------+---------+ |
# Значение Qcache_hits должно быть очень большим
Для очистки кеша:
1 |
FLUSH QUERY CACHE |