嗯,就是这样。假设我 future 的 PHP CMS 需要每天吸引 50 万访问者,我需要将它们全部记录在 MySQL 数据库中(推荐人、IP 地址、时间等)。这样我需要每分钟插入 300-500 行并再更新 50 行。主要问题是每次我想插入新行时脚本都会调用数据库,也就是每次有人点击页面时。
我的问题是,有什么方法可以首先在本地缓存传入的命中(对于该 apc、csv...,最好的解决方案是什么?)并每隔 10 分钟定期将它们发送到数据库?这是一个好的解决方案吗?针对这种情况的最佳做法是什么?
最佳答案
每天 50 万次,每秒只有 5-7 次查询。如果每个请求的处理时间为 0.2 秒,那么您将有几乎 0 个同时查询,因此无需担心。
即使您将拥有 5 倍以上的用户 - 一切都应该可以正常工作。
您可以使用 INSERT DELAYED并调整你的 mysql。
关于调优:http://www.day32.com/MySQL/ - 有非常有用的脚本(不会改变任何东西,只是向您展示如何优化设置的提示)。
您可以先使用 memcache 或 APC 在那里写入日志,但使用 INSERT DELAYED MySQL 将完成几乎相同的工作,并且会做得更好:)
不要为此使用文件。 DB 将提供比 PHP 更好的锁服务。编写有效的互斥锁并不是那么简单,所以让 DB(或 memcache、APC)来完成这项工作。
https://stackoverflow.com/questions/6031263/