2009-09-20 2 views
0

Мне интересно, не надо ли мне менять мою систему.Отслеживание просмотров контента в mysql

В настоящее время, когда просмотрел видео, она запускает запрос, который делает

UPDATE table SET hits=hits+1 WHERE id = $id. 

очень просто, за исключением того, что они появляются в медленном запросе войти все время, иногда 3-4 секунды query_time.

Что делать, если я вставляю каждое представление в виде новой строки в таблицу памяти и фиксирует изменения в БД с помощью cron каждый час? Будет ли значительная разница в производительности? Есть ли альтернативы?

ответ

1

Возможно, вы захотите проверить, что у вас есть индекс на id, поскольку это обновление не должно занимать много секунд. Речь идет о простейшем обновлении, которое вы можете сделать, чтобы не ускорить его.

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

+0

yah У меня есть индекс, но по мере увеличения трафика наблюдается значительное увеличение этих запросов (очевидно). Сайт в настоящее время делает около 100 тыс. Уникальных файлов в день .... с возможностью просмотра 500 000 страниц. – 2009-09-20 19:04:02

+0

По-прежнему не очень большой объем - что делает запрос на самом деле, используя индекс и что-то еще медленное? – Mark

0

Я бы подошел к нему так, как вы думаете. Просмотр журналов в простой таблице, оптимизированной для записи, и периодическое обновление счетчика просмотров и очистка таблицы журналов.

С видом трафика, который вы видите, вы можете обнаружить, что такая система будет работать хорошо, если вы запустите свой cron более одного раза в час.

Как отмечает Марк, у вас, вероятно, есть что-то еще, что должно быть выяснено.