开发者社区> 问答> 正文

mysql大量的insert占用cpu大量的资源问题

目前的一个a.php程序将采集其他网站中的a链接,采集回来去重后插入数据库,多的时候a链接可达上千条,用top查看linux发现当这个程序运行的时候mysql占用cpu达到了90%多。
该怎么改善一下insert程序呢?

展开
收起
落地花开啦 2016-02-11 16:45:28 3190 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    insert delayed 会让insert优先级变低,查询优先。
    把每个页面的无数条insert语句合并成一句,能让插入时间减少一个数量级(10倍或更少),用括号把每条语句的数据分组即可。不会的话,用mysqldump导出一个表,然后看看生成的SQL就知道了。

    你也可以考虑异步插入。如果你数据不需要实时反馈的。用PHP生成dump restore(SQL)文件,cron job在网站低峰时(比如每天晚上2点)启动。检查指定位置是否有SQL文件存在,存在就把它们执行掉。
    或者每单位时间触发Cron,单位时间执行JOB限制数量,执行到指定JOB数量后,退出。等待下一个JOB时间触发发生。

    2019-07-17 18:40:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
MySQL 技术大全:开发、优化与运维实战 立即下载
搭建电商项目架构连接MySQL 立即下载
RDS SQL Server CPU高使用率性能优化 立即下载

相关镜像