我正在尝试使用以下查询跟踪 MySQL DB 中的综合浏览量:
"UPDATE $table SET pageviews = pageviews + 1 WHERE page_id = 1"
这适用于中低流量。但是,在高流量下,对 DB 的持续写入会导致高读/写争用并最终导致 DB 崩溃。
我已经阅读了 Stackoverflow 和其他地方的几个 QA,其中建议使用 MongoDB 作为替代方案。但是,该选择不可用,我必须坚持使用 MySQL。此外,我无法控制引擎——MyISAM 或 InnoDB(由于基于行的锁定而不是表,InnoDB 性能更好,就像 MyISAM 的情况一样)。
考虑到上述情况,在不破坏数据库(在数据库或其他东西中)的情况下,跟踪网页浏览量的最佳方法是什么?我真的很感激提供代码片段作为起点的答案(如果可能的话)。
顺便说一句,我正在使用 PHP。
更新:@fire 在这里有一个很好的解决方案。但是,它需要使用 memcache。我正在寻找无需特定基础设施即可轻松实现的东西。这是针对可以在不同托管环境中虚拟使用的模块。转念一想,我想到的是某种基于 cookie 或文件日志的实现。我不确定这种实施在实践中如何运作。任何进一步的投入都非常受欢迎。