我想开始计算网页被查看的次数,因此需要某种简单的计数器.这样做的最佳可扩展方法是什么?
假设我有一个表Frobs,其中每行对应一个页面 - 一些明显的选项是:
在Frobs表中有一个unsigned int NumViews字段,它使用每个视图进行更新UPDATE
Frobs SET NumViews = NumViews + 1
.简单但不太擅长缩放,因为我理解它.
有一个单独的表FrobViews为每个视图插入一个新行.要显示视图数,您需要做一个简单的操作SELECT COUNT(*) AS NumViews FROM FrobViews WHERE FrobId = '%d' GROUP BY FrobId
.这不涉及任何更新,因此可以避免MyISAM表中的表锁定 - 但是,如果要显示每个页面上的视图数量,读取性能将受到影响.
你怎么做呢?
这里有一些很好的建议:http: //www.mysqlperformanceblog.com/2007/07/01/implementing-efficient-counters-with-mysql/ 但我想听听SO社区的观点.
我目前正在使用InnoDb,但我对InnoDb和MyISAM的答案感兴趣.