简单的多用户选择/选项

时间:2011-03-21 17:26:28

标签: php mysql load performance

我看到许多实现,例如Facebook喜欢,论坛业力,在论坛帖子上阅读标记,以及给定项目的多个用户可用的其他简单选项和选择。

我知道我可以在mysql中通过创建一个表来实现这一点,该表将发布ID与liker用户ID相关联,比如系统。

我的问题是,在包含大量帖子的网页上,我将不得不对每个帖子进行查找。我使用预备语句,这样我就可以更快。

是否有另一种实现这些系统的方法,如果没有,是否有像数据库类型或其他调整这样可以加快这种速度的优化?

基本上,是否存在多个数据库交互的强大,快速实现。

*编辑*** 我正在使用opera mini,因此我对ajax和js的问题进行了评论


现在,我有一个有两列的表。一个用于用户ID,另一个用于post id。两者都被索引并用于外键约束。 我正在考虑在两者之间制作复合主键。

我的主要问题是因果报应。我允许用户对每个帖子进行投票。问题是,对于每个帖子,我需要获得总票数,确定用户是否投票允许用户投票。

我的网站允许许多用户托管他们自己的网站,因此我需要认真优化这一点。

有人建议我使用内存表。


注意* * 的 我不能使用memcached。

3 个答案:

答案 0 :(得分:2)

我强烈建议使用除MySQL数据库之外的其他内容。我编写了一个opensocial应用程序,它对数据库进行了大量写入和读取操作。这一切都始于MySQL DB,我甚至切换到专用的主从复制设置。但无济于事,价格昂贵,而且规模不大。

最终的解决方案是使用NoSQL db,它可以充分利用RAM。我的决定是mongoDB,它有一个活跃的社区,很好地解决了我的问题。 MongoDB证明具有高度可扩展性。

答案 1 :(得分:1)

到目前为止,你仍然有点朦胧,但我会启动它并继续添加东西,如果需要的话:

  1. 确保您正在编制索引
  2. 最小查询 - 你得到了清单 将弹出的帖子,使用它 列表以匹配类似的,如果他们查看了文章等。
  3. 使用数字 - 确保你所有的 与数字进行比较
  4. 如果您正在运行查询,请不要为每个帖子运行单个查询
  5. 您的查询是否有限制? - 确保你使用
  6. 反规范化不是罪[/ li>
  7. 您可以对数据库进行分区以减少查找次数(例如,如果数据超过60天且几乎没有触及,请将其移至辅助数据库/表格,因此表格的大小并不大)。
  8. e.g。 SELECT * FROM user_liked WHERE post_id IN (1,2,3) 而不是

    SELECT * FROM user_liked WHERE post_id = 1
    

答案 2 :(得分:0)

Philipp Keller几年前就基于MYSQL的标签系统撰写了大量文章。就像喜欢一样,标记正在建立事物(标记,被喜欢的文章)和用户之间的多对多关系。他的文章中的逻辑也应该直接适用于你的问题。

查看评论。