我有一个数据库,其中一个表存储文章。对于每一篇文章,我都需要存储被浏览的次数。现在,我的想法是将这个值存储在数据库中,每次有人用这篇文章访问页面时更新它,我现在正在考虑两个替代方案:
articles中创建列views并对其进行更新。view_count。我的问题是:这两种方法在速度和原因上有什么不同吗?还有更好的选择吗?
我使用的数据库是PostgreSQL。
Note说,我没有考虑以不同的方式将这些值累积到单独的文件中,在数据库之外,然后再插入,因为我没有那么多的点击次数)这个特性是次要的,如果它需要这样的麻烦,我们宁愿放弃它,并为此使用其他服务。
发布于 2010-12-14 11:27:58
两种方案的差别是相当微妙的,下面是我对它们的看法:
同表
nx更多I/O取决于记录大小/块大小,如果记录大小比块大小小得多,那么索引查找的效果取决于磁盘上数据的查询/顺序的类型--如果从同一块中选择记录,您将感受到性能的影响,如果选择稀疏的数据,您将感觉不到它)分离表
I/O)
Notes
这个注释适用,但很微妙:记录大小可能不会受到显著影响,从而影响所有查询。使用单独的表减少I/O的好处可能是不可察觉的。
发布于 2010-12-14 11:23:55
如果articles表比更新时得到更多的写入,那么由于写入时的表锁,列的速度可能会慢一些。
使用单独的表只是稍微慢一点/重一点,但在更新方面是最轻的。但是,在完成大量的写操作之后,您可以轻松地重新构建表,而不会造成很大的性能损失,因为它将是一个非常轻的表。
但是,如果您的数据库负载不高,那么可以简单地选择添加列。
发布于 2010-12-14 11:29:18
我有另外一种方法,我做更新在一天晚些时候,或当流量是网站太少。我会这样做,当任何用户读取文章时,用户id将存储在一个新的表中,稍后通过脚本,我可以更新文章被用户读取的次数。
https://stackoverflow.com/questions/4438458
复制相似问题