在MySQL DB中增加计数器的最快方法

时间:2014-02-17 17:31:11

标签: mysql percona

我在VPS上运行一个论坛,运行Percona DB,使用PHP 5.5.8,操作码缓存等,这些都非常快速。

我也在运行New Relic,(是的,我有T恤)。

当我正在调整应用程序时,优化论坛正在为数据库进行查询,以查找我消耗时间列表顶部的任何查询。

现在,我最常用的查询,因为它最常用的是每个主题的简单点击计数器。

所以查询是:

UPDATE topics SET num_views = num_views + 1  WHERE id_topic = ?

我想不出更简单的方法来执行此操作,或者是否有其他各种方法可能更快,以及为什么。

有没有办法让这个查询更快,或者我可以添加一个索引来提高速度?

感谢。

2 个答案:

答案 0 :(得分:1)

假设id_topic被编入索引,你就不会变得更好。我唯一的建议是查看此表中的其他索引,并确保没有包含num_views的冗余索引。这会降低此更新的更新速度。

例如,如果您有以下索引

  1. (some_column,num_views)
  2. (some_column,num_views,another_column)
  3. 索引#1将是无关的,只是添加到插入/更新开销

答案 1 :(得分:0)

不确定这是否有所改善,但您可以查看以下内容:

如果只为表中的每个页面添加一行而不是锁定和更新行怎么样?

然后使用计数来获取结果,并缓存它们而不是每次都进行计数?

(也许每天压缩一次表?)