URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7624
[ Назад ]

Исходное сообщение
"Кеширование в memcache. Как быть с сложными запросами?"

Отправлено BigEye , 05-Окт-08 17:22 
Очень понравилась методика упрощения запроса и кэширования данных в memcache, описанная Михаилом Монашевым. http://softsearch.r­u/i/download/mmug.pd­f. Сейчас имею под рукой код с большим количеством сложных запросов и вот думаю, стоит ли тут применять такой же подход. Например как быть с запросами которые выводят блоги пользователей с различными сортировками. Пример одного такого запроса:

  $query = 'select b.title, b.id, p.id as post_id, p.title as post_title, u.login, u.gender, u.id as user_id,
  (CASE WHEN (lu.last_update >="'.getDbDate(time() - SESSION_ONLINE_PERIOD).'")
    THEN  REPLACE(a.image_url, ".gif", "_online.gif") ELSE a.image_url END) as avatar_url, b2.hits
from blog b
inner join (
  select b.id, count(bh.id) as hits from blog b
  LEFT JOIN blog_hit bh on ( bh.blog_id = b.id and TO_DAYS(now())-TO_DAYS(bh.create_date) <= 3 )
  group by b.id) b2 on b2.id = b.id
INNER JOIN post p ON p.id = last_post
inner join user u on (b.user_id = u.id)
LEFT JOIN user_last_update lu ON lu.user_id = u.id
inner join avatar a on (a.id = u.avatar_id)
WHERE b.hidden="no" AND b.read_access<>"'.ACCESS_TYPE_DISABLED.'"
ORDER BY b2.hits DESC';
Разбить такой запрос на более мелкие и закэшировать не так просто получается :) стоит ли заморачиваться? опыта нема с большими нагрузками, интересно мнение тех, кто имеет такой опыт :)


Содержание

Сообщения в этом обсуждении
"Кеширование в memcache. Как быть с сложными запросами?"
Отправлено klubben , 07-Окт-08 14:33 
Как известно memcached был создан для LiveJournal (выводит блоги с различными сортировками), просто смотрите исходники ЖЖ :)