Не странно в некоторых случаях. Например нет никаких причин нагружать БД теми-же результатами поиска или облаком тегов, не говоря уже о полностью или частично сгенеренных страницах.
В основном проблема была с почтой - на каждой странице нужно было выводить, сколько есть новых сообщений, сколько всего, тип нового сообщения. Таблица сообщений была громадная (около 5 гб). Были созданны файлы для каждого пользователя, в которых содержалась эта выборка, они изменялись синхронно с изменением в базе, и из них тянули информацию.
После разбиения на несколько таблиц эту одну супер табкицу, нагрузка немного ушла. После установки memcached нагрузка исчезла вообще.
2yurka:
чтобы еще разгрузить БД попробуйте хотя бы ADOBD (он умеет кэшировать результаты запросов в memcached).. для средних проектов - самое то ;)
с версии 4.92 29 ADODB умеет работать с memcached
> срок хранения данных в кеше - неделя
вот это довольно спорно. Срок хранения должен зависеть от природы данных. Скажем совсем статичные данные(конфиги скажем) можно кешировать и на месяц, а инфорация которая изменяется(тоже количество сообщений) нужно кешировать осторожно и обновлять кеш при изменении данных.
Согласен с вами. Поэтому сейчас мы вносим в кэш данные на неделю в том случае, если они не изменяются. При любом изменении данных пользователя, кэш данного пользователя обнуляется. Сначала пытались изменять кэш "на лету", но как вы и написали, это вызывало кучу неточностей в кэше.
Спасибо, что подтвердили мои мысли, теперь я более уверен в последних изменениях.
UPD - нагрузка, и при варианте изменений "на лету", и при обнулении кэша, гораздо ниже, чем при файловом кэшировании, и практически не ощутима.
В данном случае подразумевается рост посещаемости/нагрузки на основной сервер ? В таком случае уже надо будет искать другие пути решения - выделения серверов для memcached, бд, apache например. Тогда уже будут и другие решения, не знаю, не сталкивался, но после первого знакомства с memcached, мне не кажется, что именно он будет делать особые проблемы...
400 Mb под memcached - это замечательно. Но если посмотреть документацию, то выясним, что memcached не гарантирует, что запрашиваемая страница хранится в кэше.
Я говорю о том, что memcached действительно дает огромный выигрыш в скорости, но при этом, как хранилище данных, memcached абсолютно не надежен. Очень неприятная ситуация, когда вы положили данные в кэш, и затем пытаетесь обратиться к этим данным, а их уже нет - данные потеряны. Причем я говорю опираясь на опыт применения memcached в реальных проектах - мы сталкнулись с проблемой потери данных. И решить эту проблему не получилось - memcached не гарантирует что данные не будут потеряны. Нам пришлось отказаться от использования memcached и хранить кэш данных в БД под управлением Oracle.
PHP: Изменение файлового кеширования на memcached — впечатления