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

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

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

Проверим текущее состояние кэша:

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 запрос выполняется из базы)

Поделись с друзьями:

Опубликовано 02.05.2013 в 15:25 · Автор komivlad · Ссылка
Рубрики: DataBases, MySQL · Теги: , , ,

Написать комментарий