0

我正在为用户构建一个小应用程序来创建集合。我想在那里有一个评级系统。现在,既然我想覆盖我所有的领域,让我们假设我有很多访客。性能开始发挥作用,尤其是在费率方面。

假设我有rates桌子,那里有idgame_id和。数据很简单,每个用户都有一个条目。让我们再次假设,1000 个用户会对一款游戏进行评分。我想在那个游戏子页面(以及其他地方,比如游戏列表)上打印出平均费率。目前,我有两种情况要处理:user_idrate

  1. AVG每次显示游戏时获取。

  2. 在 中创建另一列games,调用temprate并存储游戏的速率。每次有人投票时都会更新。

这两种情况都有明显的缺陷。第一个对我的主机来说压力更大,因为它肯定会消耗更多的机器功率。其次是评级时的更多工作(获取所有游戏数据,提交率,获得新的AVG)。

请告诉我,我应该选择哪种方案?或者,也许您还有其他想法?

我使用 PDO 并且没有框架。

4

2 回答 2

0

所以我终于设法解决了这个问题。我使用基于将数组转储到文件中的文件缓存。我只是选择类似的东西if (cache) { $var = cache } else { $var = db }。我现在正在使用JG Cache,但我很快就会给自己写一些类似的东西,但现在 - 这是一个很好的解决方案。

于 2012-06-18T07:13:55.133 回答
0

我会选择你的“2号”解决方案的变体(更新一个单独的评级列),也许只是为了这个而在一个单独的表中。

如果写入的数量成为问题,那么之后就会很好select avg(foo) from ...,并且有很多方法可以通过定期更新平均评级或只是每隔一段时间处理新的投票来缓解它。

很可能最终你不能只做一个 avg() ,因为你必须考虑每一次投票是否存在欺诈,计算一个排序分数,谁知道还有什么。

于 2012-06-18T07:22:45.287 回答