Spec-Zone.ru › MySQL 5.7

8.10.3.4 Статус кэша запросов и обслуживание

Примечание

Кэш запросов устарел начиная с MySQL 5.7.20 и удалён в MySQL 8.0.

Чтобы проверить, присутствует ли кэш запросов в вашем сервере MySQL, используйте следующее утверждение:

mysql> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+

Вы можете дефрагментировать кэш запросов, чтобы эффективнее использовать память, с помощью оператора FLUSH QUERY CACHE. Этот оператор не удаляет запросы из кэша.

Оператор RESET QUERY CACHE удаляет все результаты запросов из кэша запросов. Оператор FLUSH TABLES также выполняет это действие.

Для мониторинга производительности кэша запросов используйте SHOW STATUS для просмотра переменных статуса кэша:

mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+--------+
| Variable_name           | Value  |
+-------------------------+--------+
| Qcache_free_blocks      | 36     |
| Qcache_free_memory      | 138488 |
| Qcache_hits             | 79570  |
| Qcache_inserts          | 27087  |
| Qcache_lowmem_prunes    | 3114   |
| Qcache_not_cached       | 22989  |
| Qcache_queries_in_cache | 415    |
| Qcache_total_blocks     | 912    |
+-------------------------+--------+

Описания каждой из этих переменных приведены в разделе 5.1.9 «Переменные статуса сервера». Некоторые их применения описаны здесь.

Общее количество SELECT запросов определяется по этой формуле:

  Com_select
+ Qcache_hits
+ queries with errors found by parser

Значение Com_select определяется по этой формуле:

  Qcache_inserts
+ Qcache_not_cached
+ queries with errors found during the column-privileges check

Кэш запросов использует блоки переменной длины, поэтому Qcache_total_blocks и Qcache_free_blocks могут указывать на фрагментацию памяти кэша запросов. После FLUSH QUERY CACHE остаётся только один свободный блок.

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

Информация, предоставляемая переменной статуса Qcache_lowmem_prunes, может помочь вам настроить размер кэша запросов. Она подсчитывает количество запросов, удалённых из кэша, чтобы освободить память для кэширования новых запросов. Кэш запросов использует стратегию наименее часто используемого (LRU) для определения запросов, которые нужно удалить из кэша. Информация по настройке приведена в разделе 8.10.3.3 «Настройка кэша запросов».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/query-cache-status-and-maintenance.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API