我需要计算通过网络访问的 .php 脚本的展示次数。现在我在一个 1 行 MySQL 表中执行此操作并只是增加值。这通常工作正常,但是当服务器有流量突发(数百个请求/秒)时,一切都会延迟并且增量 SQL 语句开始在 MySQL 的慢速查询日志中弹出。
我试图通过 APC 进行计数,但它“丢失”了值,也就是说,当我运行一个简单的 ab 测试命令时
ab -n 100 -c 10 http://example.com/script.php
仅计算 ~50 次新印象,而在 MySQL 上计算 100 次。
我还尝试通过memcache计算印象,它工作得更好(也就是说,它能够跟上更多的同时连接)但它也无法在 50 或 100 个并发连接后计算所有内容。
我想知道是否有人知道解决这个问题的好方法?
最后我选择使用 MEMORY 表而不是通常的 INNODB 表。虽然该解决方案并不完美,但它比仅为此使用 INNODB 效果要好得多。我还将此解决方案应用于数据完整性不重要且结果良好的其他一些表。