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

Как выяснилось, MySQL содержит встроенный механизм кэширования запросов, который, однако не включен по умолчанию.
Проверить какие параметры кэширования выставленны по умолчанию, можно с помощью следующего запроса:
mysql> show variables like 'query_cache%'; |
+------------------------------+---------+ |
| Variable_name | Value | |
+------------------------------+---------+ |
| query_cache_limit | 1048576 | |
| query_cache_min_res_unit | 4096 | |
| query_cache_type | ON | |
| query_cache_wlock_invalidate | OFF | |
+------------------------------+---------+ |
Чтобы выделить под кеширование 32Мб оперативной памяти на лету, м ожно выполнить следующий запрос:
set @@global.query_cache_size=32*1024*1024; |
чтобы данная настройка не слетала при перезагрузке, необходимо добавить в my.cnf в подраздел [mysqld]строчку
Проверим текущее состояние кэша:
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 | |
+-------------------------+----------+ |
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 запрос выполняется из базы)