Разделы сайта

Самое популярное

Архив

Партнеры & Друзья

Каталог ссылок

Такси Мерседес всегда свободно: дешевое такси в аэропорт. Такси в аэропорт от 600 рублей.

ремонт электродвигателя вентилятора отопителя ваз2115

Поиск по сайту

Кто на сайте

Реклама



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

  • Написал: DLE 20 марта 2009
  •  (голосов: 2)
В данной статье мы желаем поведать вам о том как можно понизить нагрузку на 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 часа. Включение данной функции дозволяет сэкономить процессорное время для огромных страниц. 

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

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



  • Просмотров: 3289
  • Комментировать (0)

  • Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.