Включение кэширования в MySQL | Вебмастер DataLife Engine

Включение кэширования в MySQL

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

MySQL содержит встроенный механизм кэширования запросов, который, не включен по умолчанию. Для получения состояния о кешировании, выполните в phpMyAdmin запрос:

show variables like ‘query_cache%’;

В результате вы получите таблицу примерно следующего содержания:

Variable_name Value ¦lt;br /> query_cache_limit 1048576
query_cache_min_res_unit 4096 ¦lt;br /> query_cache_size 0 ¦lt;br /> query_cache_type ON ¦lt;br /> 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 часа. Включение данной опции позволяет сэкономить процессорное время для больших сайтов.

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

  • Posted on 1. июля 2009
  • Written by admin
Оставить комментарий
 

Еще нет никаких комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *