php – 每秒大量插入导致大量CPU负载

我有一个PHP脚本,在每次运行中,将一个新行插入一个Mysql数据库(具有相对少量的数据..)
我每秒有超过20个请求,这导致我的CPU尖叫寻求帮助..

我正在使用带有MyISAM引擎的sql INSERT DELAYED方法(虽然我只是注意到INSERT DELAYED不能与MyISAM一起使用).

我主要担心的是我的CPU负载,我开始寻找使用更多CPU友好解决方案来存储这些数据的方法.

我的第一个想法是将这些数据写入每小时的日志文件,每小时一次从日志中检索数据并立即将其插入数据库.

也许更好的想法是使用NoSQL DB而不是日志文件然后每小时一次将数据从NoSQL插入到Mysql中.

我没有测试任何这些想法,所以我真的不知道这是否会设法减少我的CPU负载.我想问一下是否有人可以帮我找到对我的CPU影响最小的正确解决方案.

解决方法:

我最近有一个非常类似的问题,我的解决方案是简单地批处理请求.由于减少了mysql连接的开销,并且重建索引的数量大大减少,因此加速了大约50次.将它们存储到文件中,然后立即执行一个更大的(100-300个单独插入)语句可能是个好主意.为了加快速度,可以在插入的持续时间内关闭索引

ALTER TABLE tablename DISABLE KEYS
insert statement
ALTER TABLE tablename ENABLE KEYS

执行批量插入会减少运行php脚本的实例数量,它会减少当前打开的mysql句柄数量(大幅改进),并且会减少索引量.

相关文章

校园网上订餐系统系统主要功能模块包括公告内容(公告栏、轮...
从今天开始,正式进入项目阶段。本次的项目是跟着黑马的瑞吉...
在可预见的将来,IT不会萎缩,只会越发展越庞大,最终会渗透...
vulntarget-b靶场最详细通关记录。
MongoDB是一个开源、高性能、支持海量数据存储的。
【NoSQL数据库技术与应用】课本代码、课后答案(持续更新)