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

Тема в разделе "DLE", создана пользователем g-prime, 10 фев 2009.

Информация :
Актуальная версия DataLife Engine 11.1
( Final Release v.11.1 | Скачать DataLife Engine | Скачать 11.1 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. g-prime

    g-prime איך בין גאָט

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

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

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

    где query_cache_size показывает размер оперативной памяти выделенного под кеш запросов. Для того чтобы включить кэш запросов и выделить под него 16 мегабайт памяти необходимо выполнить запрос:


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


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

    Для проверки состяния кеша необходимо выполнить следующий запрос:

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


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

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


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

    Автор: celsoft
     
    sergeysnl и Smile нравится это.
  2. bukа

    bukа Писатель

    Заблокирован
    Регистр.:
    23 окт 2008
    Сообщения:
    446
    Симпатии:
    138
    Если у вас 20k новостей и сколько же пользователей, то это очень снизит нагрузку
     
  3. PoMaH

    PoMaH

    Регистр.:
    8 июн 2006
    Сообщения:
    753
    Симпатии:
    142
    нормальные сервера это имеют и так.
    рам / 4(6) = ...

    там уже роль играет только рам и цпу.

    Лутшеб он уже давно перешол на Innodb..

    но изза похожих новостей (хака) там где FULL TEXT не может перейти...

    Так же давно пора ему познать и правельный UTF а не из фигни в слона конвентировать
     
  4. okras

    okras Постоялец

    Регистр.:
    6 май 2006
    Сообщения:
    141
    Симпатии:
    14
    Вот если бв кто то взялся и нормальное кеширование сделал .. например есть компонент для joomla .... там можно настроить кеширование каждого модуля и даже блоков..
    А в дле кеширование - фиговое.. и при 30 к новостей ... серваку просто жарко становится... такие объемы даже не для VPS
     
Статус темы:
Закрыта.