在mysql中为统计计数器创建一个单独的表?

时间:2011-09-16 13:35:59

标签: php mysql sql count statistics

我有一个关于帖子的表,如ID,标题,内容等。我刚添加了一个列作为计数器。这是一个简单的访问计数器,因为它每次都会更新为$ i + 1。在这个方法中,我在每次访问时更新表,就在读取行之后(在单个mysql会话中)。

将计数器作为另一个与post表连接的表与ID作为外键分开是一个好主意吗?在此方法中,更新较轻的表更快,但每次我需要读取两个表(显示帖子及其统计信息)。

1 个答案:

答案 0 :(得分:1)

所以,我的答案取决于你想要做什么。我将给你一些关于MySQL的场景信息,以便你可以决定何时有意义而不是创建一个计数器表。

MySQL有不同的表引擎。在创建新表时,您可以指定要使用的引擎,更常见的是MyISAMInnodb。 MyISAM在做选择方面非常好而且快速,而Innodb在插入时非常快。两者之间还存在其他差异,但很好理解您选择的引擎非常重要。

基于以上所述,如果你有一个通常读取并且有大量行的表,那么将该表保持为MyISAM并使用Innodb创建一个不断更新的单独计数器表可能是有意义的。如果您正在实现缓存,这是此模型更好地工作的另一个原因,因为每次更新计数器时都不会清除表数据的缓存,因为您将在另一个表上更新计数器。

现在,有些人可能会争辩说你应该使用Innodb,因为它有更多的好处,但有复制策略可以让你充分利用这两个世界。

我希望这能为您提供一般性的理解,这样您就可以深入挖掘并找到答案。更多信息:http://www.mysqlperformanceblog.com/2007/07/01/implementing-efficient-counters-with-mysql/