我有几张桌子:
media: id, name, score
media_rating: id, value, media_id, user_id
用户对网站和系统执行评级:
问题:媒体评级为每秒500到1000个新记录。我需要从媒体上阅读以向用户提供媒体评分,但我觉得桌子正在被所有新媒体创建的评分更新完全轰炸。请求失败就像疯了一样。
我怎样才能使这个东西缩放?
答案 0 :(得分:0)
或许完全避免使用MySQL可能就是答案。过去我使用Redis(http://redis.io/)做了类似的事情,我取得了很大的成功。阅读文档(http://redis.io/documentation),它可能会引导您朝着正确的方向前进。
答案 1 :(得分:0)
您的第二步实际上没有必要,因为您已经通过简单查询(类似SELECT COUNT(*) FROM media_rating WHERE media_id = x
)获得了数据。虽然这可以使您免于大量更新,但可能会创建另一个问题,因为每次您希望用户提供评分时您都需要计算。计数不是必需的,因此它可能会节省一些(因为您在检索当前评级时无论如何都必须查询数据库)。如果它仍然给你带来问题,你可以'延迟'评级数;偶尔更新score
一次(使用cronjob或poormans-cron)
答案 2 :(得分:0)
将此处理为更像网络分析问题可能会导致您失去一些有用的路径...例如仅记录实际评级的样本......