Встроенный механизм кэширования запросов в MySQL.

MySQL содержит встроенный механизм кэширования запросов, который, однако не включен по умолчанию. Вот такие параметры выставленны по умолчанию в MySQL 5.0:
mysql> show variables like ‘query_cache%’;

mysql> show variables like 'query_cache%';
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 0       |
| query_cache_type             | ON      |
| query_cache_wlock_invalidate | OFF     |
+------------------------------+---------+

Чтобы включить кэш запросов и выделить под него 32 мегабайта памяти можно выполнить запрос set @@global.query_cache_size=32*1024*1024; с правами суперпользователя, а чтобы сделать эту настройку постоянной, следует добавить в my.cnf в подраздел [mysqld] строчку query_cache_size=32M. Второй полезный параметр – query_cache_limit задает максимальный объем результата выполнения запроса, который может быть помещен в кэш

Текущее состояние кэша

Посмотреть состояние кэша можно с помощью запроса:
mysql> SHOW GLOBAL STATUS LIKE ‘Qcache%’;

+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| Qcache_free_blocks      | 973      |
| Qcache_free_memory      | 14282000 |
| Qcache_hits             | 3293750  |
| Qcache_inserts          | 252819   |
| Qcache_lowmem_prunes    | 0        |
| Qcache_not_cached       | 66645    |
| Qcache_queries_in_cache | 1342     |
| Qcache_total_blocks     | 3709     |
+-------------------------+----------+
8 rows in set (0.00 sec)

Здесь:

Qcache_free_memory – объем свободной памяти, отведенной под кэш.
Qcache_hits – количество запросов, отработанных из кэша.
Qcache_inserts – количество вставок запросов в кэш.
Qcache_lowmem_prunes – количество высвобождений памяти из-за наполненности кэша.
Qcache_not_cached – количество запросов, не подлежащих кэшированию.
Qcache_queries_in_cache – количество запросов, находящихся в кэше в настоящее время.

Мерой эффективности кэша может служить отношение Qcache_hits / (Qcache_inserts + Qcache_not_cached).
25 069 / (11 196 + 916) = 2.06976552 (каждый второй запрос выполняется из базы)
3 293 750 / (252 819 + 66 645) = 10.3102384 (каждый 10 запрос выполняется из базы)

Leave a Reply

Your email address will not be published. Required fields are marked *


*