MySQL кеширование

MySQL кеширование

Дорогие товарищи,
в данной для нас статье мы жаждем поведать для вас о том как можнож понизить нагрузку на MySQL сервер, при всем этом не прибегая к настройкам самого скрипта. Речь сегодняшний день пойдет о эких потенциалах MySQL как кеширование результатов запросов. Кеширование запросов дозволяет прирастить производительность интернет прибавлений, не внося при всем этом каких то конструктивных конфигураций в сами прибавленья. Сущность его службы состоит в том что он запоминает результаты запросов в оперативной памяти и при повторном запросе, он не исполняет запрос, а легко немедля дает результаты из кеша. По умолчанию кеширование в MySQL отключено, оттого включить его сумеют не многие, а только лишь юзеры обладающие вероятность выволнения запросов от имени суперпользователя MySQL либо обладающие доступ к конфигурационным файлам MySQL сервера. Но этого и хватить, т.к. MySQL кеширование отлично только лишь для высокопосещаемых проектов, а они обычно обладают VPS тарифы где доступ к настойкам глодать, или собственные сервера. Ежели ваш чертеж обладает незначительную посещаемость, то в принципе для вас это не надо, т.к. особенной приметной эффективности вы не добьетесь.

MySQL держит интегрированный механизм кэширования запросов, тот или иной, не включен по умолчанию. Для получения состояния о кешировании, выполните в phpMyAdmin запрос:
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 | 
+------------------------------------+---------+


где query_cache_size указывает размах оперативной памяти выделенного под кеш запросов. Для того чтоб включить кэш запросов и выделить под него 16 мб памяти нужно выполнить запрос:
SET @@global.query_cache_size=16777216;


Запрос нужно исполнять с правами суперпользователя, а ежели вы желаете сделать предоставленную настройку неизменной, надлежит добавить в my.cnf в подраздел [mysqld] строку:
query_cache_size=16M.


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

Для проверки состяния кеша нужно выполнить должно запрос:
SHOW GLOBAL STATUS LIKE 'Qcache%';


Результатом будет таблица приблизительно должно содержания:
Qcache_free_blocks 570
Qcache_free_memory 13454680
Qcache_hits 111749 
Qcache_inserts 168162 
Qcache_lowmem_prunes 0
Qcache_not_cached 38651 
Qcache_queries_in_cache 1290 
Qcache_total_blocks 3314


где Qcache_free_memory размах вольной памяти кеша, Qcache_hits число запросов тот или другой отданных из кеша, Qcache_lowmem_prunes число освобожденной памяти из за нехватки кеша, в эталоне надлежать иметься 0, ежели это не так, то означает памяти кеша для вас не хватает и его необходимо прирастить.

Интерес для эффективности MySQL кеширования в DLE нужно в настройках скрипта в разделе оптимизации включить опцию:
Кешировать счетчик просмотров новостей
Ежели 'Нет', то счетчик просмотров новостей будет обновляться с каждым просмотром. Ежели 'Да', число просмотров будет записываться в вторую таблицу и обновляться каждые 4 часа. Включение предоставленной функции дозволяет сэкономить процессорное период для крупных веб-сайтов.


В неприятном случае таблицы новостей будут непрерывно обновлятся при каждом просмотре и кеш будет неэффективен.

Вот фактически и все.

Создатель: celsoft ( dle-news.ru )

Источник: dle-news.ru
Опубликовано: 31-05-2016, 05:52