Думаю, я не хочу иметь
миллионы записей в журнале замедляют мой сайт, поэтому я должен запустить cron
работа по очистке таблицы журнала один раз в день?
Подумайте об использовании синтаксиса ON DUPLICATE KEY UPDATE в mysql, чтобы избежать использования SELECT с дорогостоящим предложением WHERE. Если в вашей таблице журнала также есть столбец отметки времени, вы можете обновить это значение.
INSERT into tbl_log (IP,video_id) VALUES ($usersip, $video_id) ON DUPLICATE KEY UPDATE time_recorded = now();
Это потребует от вас УНИКАЛЬНОГО ограничения на столбцы IP
и video_id
.
Должен ли я сделать представления транзакционными?
(Я думаю, слегка обесцененный вид
счет менее важен, чем медленный
сайт из-за блокировки строк)
Нет, потому что вы можете достичь этого с помощью одного запроса UDPATE.
UPDATE tbl_video SET views = views + 1 WHERE video_id = $video_id
Есть ли способ уменьшить нагрузку на
сервер MySQL .... боюсь, если каждый
просмотр требует увеличенного количества просмотров
и журнал IP, что это будет довольно
дорого. Я видел, что YouTube
и тому подобное не обновлять представления
мгновенно ... они кешируют обновления
кто-то как, а потом запустить их сразу? если
ну и как?
Это не так уж плохо - на самом деле нет другого способа надежного захвата данных для просмотра записей. В случае Youtube более вероятна задержка записи или репликации, что приводит к задержке, которую вы заметили, поскольку они имеют сотни серверов (хотя, возможно, они также кэшируют значение)
Насколько эффективна моя система? Ты можешь
думаете о каких-либо улучшениях?
Кроме того, что я здесь уже упомянул, не с моей головы.