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