使用PHP和MySQL管理大量的读取和写入

时间:2012-06-06 23:21:39

标签: php mysql database scale

我有几张桌子:

media: id, name, score
media_rating: id, value, media_id, user_id

用户对网站和系统执行评级:

  1. 创建新闻media_rating记录
  2. 通过media_rating
  3. 的值增加相应媒体上的得分

    问题:媒体评级为每秒500到1000个新记录。我需要从媒体上阅读以向用户提供媒体评分,但我觉得桌子正在被所有新媒体创建的评分更新完全轰炸。请求失败就像疯了一样。

    我怎样才能使这个东西缩放?

3 个答案:

答案 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)

将此处理为更像网络分析问题可能会导致您失去一些有用的路径...例如仅记录实际评级的样本......

What is the best way to count page views in PHP/MySQL?