Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Как хранить записи о посещенных юзером страницах? (rocker)
Author Message
rocker
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue May 25, 2010 9:43 pm (написано за 4 минуты 23 секунды)
   Post subject: Как хранить записи о посещенных юзером страницах?
Reply with quote

Приветствую всех.
Имеется следующая задача: выводится список постов, кусок текст из поста, кол-во комментов -- все как обычно.
Но необходимо показывать рядом с кол-вом комментариев кол-во новых комментраиев, после последнего посещения поста юзером.

Собственно, как я решил эту проблему: есть табличка `visits` с полями id, user_id, post_id, last_visit.
При каждом визите поста, создается новая запись в табличке или же обновляется время последнего посещения.
А на странице списка постов, просто вытаскиваю время последних визитов постов с нужными id.
Все бы неплохо, однако постов много, юзеров тоже и табличка `visits` сейчас уже содержит около 14 миллионов записей.
А количество юзеров, соответственно, растет, также как и количество постов.
Каждый месяц архивировать табличку в, к примеру, `visits_05_2010`, не вариант, на мой взгляд, т.к. юзер может зайти на страницу постов годичной давности. Тогда придется пробегаться по всем таблицам `visits_*_*` в поисках нужных визитов.

Поэтому хочу попросить совета, как лучше решить эту задачу можно?
Всем заранее спасибо за внимание!
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Tue May 25, 2010 11:53 pm (спустя 2 часа 10 минут; написано за 37 секунд)
   Post subject:
Reply with quote

Можно вопрос, а в чем проблема то?

У вас всего 14 миллионов записей.
Back to top
View user's profile Send private message Send e-mail
rocker
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed May 26, 2010 12:16 am (спустя 23 минуты; написано за 40 секунд)
   Post subject:
Reply with quote

Эти 14 лямов набрались за 3-4 месяца работы, в дальнейшем скорость роста только увеличится.
Ну, и мне почему-то кажется, что я делаю что-то не так и использую неправильное решение.
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Wed May 26, 2010 6:13 am (спустя 5 часов 56 минут; написано за 1 минуту 17 секунд)
   Post subject:
Reply with quote

Вам достаточно правильно создать индексы
У нас в таблице сообщений около 30 миллионов записей было месяца два назад, сейчас больше, проблем нету, хоть добавление происходит по несколько в минуту.
Back to top
View user's profile Send private message Send e-mail
rocker
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed May 26, 2010 7:02 am (спустя 49 минут; написано за 38 секунд)
   Post subject:
Reply with quote

Угу, а у меня добавления записей в эту табилцу происходит ежесекундно по вечерам и это создает уже заметную нагрузку на БД.
В общем, я придерживаюсь мнения, что в этой схеме нужно что-то менять.
Back to top
Миша Спларов
Участник форума



Joined: 17 Nov 2003
Posts: 821
Карма: 65
   поощрить/наказать

Location: Россия, Москва

PostPosted: Wed May 26, 2010 7:32 am (спустя 29 минут; написано за 39 секунд)
   Post subject:
Reply with quote

Quote:
это создает уже заметную нагрузку на БД
А поточнее? И как измеряли?
Back to top
View user's profile Send private message
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Wed May 26, 2010 7:58 am (спустя 25 минут; написано за 23 секунды)
   Post subject:
Reply with quote

В таком случае интересно посмотреть на запросы и на create table
Back to top
View user's profile Send private message Send e-mail
rocker
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu May 27, 2010 1:08 pm (спустя 1 день 5 часов 10 минут; написано за 1 минуту 7 секунд)
   Post subject:
Reply with quote

Измерял с помощью slow-queries.
Просто интересно, насколько вообще это адекватное количество строк для таблицы?
Появилась идея, как немного разбить эту табличку, но все равно в будущем объем будет большой.
Или 14 лямов -- ерунда еще? Когда стоит задумываться над следующей оптимизацией?

Всем спасибо за ответы!
Back to top
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Thu May 27, 2010 1:36 pm (спустя 27 минут; написано за 36 секунд)
   Post subject:
Reply with quote

Quote:
Измерял с помощью slow-queries.
теперь нужно смотреть explain этих запросов и create используемых таблиц
Back to top
View user's profile Send private message
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Thu May 27, 2010 1:53 pm (спустя 17 минут; написано за 2 минуты 2 секунды)
   Post subject:
Reply with quote

у нас в основной таблице сейчас 58 миллионов записей. Так что 14 это пока не страшно.
Опять-же explain, create table.

Если у вас довольно слабый виртуальный сервер, то конечно можно резать старые сообщения - например если не смотрел более 3-6 месяцев.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML