gpt4 book ai didi

mysql - 在 MySQL 中实现计数器字段的最佳方法是什么

转载 作者:可可西里 更新时间:2023-11-01 06:44:24 25 4
gpt4 key购买 nike

我想开始计算网页被查看的次数,因此需要某种简单的计数器。执行此操作的最佳可扩展方法是什么?

假设我有一个表 Frobs,其中每一行对应一个页面 - 一些明显的选项是:

  1. 有一个 unsigned int NumViews 字段在 Frobs 表中使用 UPDATE 在每个 View 上更新
    Frobs SET NumViews = NumViews + 1
    。很简单,但据我所知不太擅长缩放。

  2. 有一个单独的表 FrobViews 为每个 View 插入一个新行。显示 查看次数,然后您需要执行一个简单的 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 的答案很感兴趣。

最佳答案

如果可伸缩性对您来说比数字的绝对准确性更重要,那么您可以在应用程序中将 View 计数缓存一小段时间,而不是在每次页面 View 时访问数据库——例如,每 100 次 View 只更新一次数据库.

如果您的应用程序在数据库更新之间崩溃,那么您显然会丢失一些数据,但如果您可以容忍一定程度的不准确性,那么这可能是一种有用的方法。

关于mysql - 在 MySQL 中实现计数器字段的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/526420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com