PHP写的采集程序 MYSQL占用CPU 100% 解决办法。

 最近搞个项目,需要定时抓取数据。并且是多进程大批量插入。

两小时执行一次,刚开始没有分批处理,每次执行大约要操作十几万次MYSQL。其中 一半是插入操作。

调试过程中发现 CPU 一直保持满负荷状态,并且执行时间最慢两个多小时没有执行完。

查阅相关资料。现将解决办法记录如下:

首先是合并插入和查询语句,原来是需要插入一次就执行一次 INSERT 。

修正为INSERT INTO T (`id`,`name`) VALUES(),(),(),(),(),(),(),(),(); 这样一次插入多条。 

UPDATE 也用 ; 号割离,然后 积攒到 200 条 的时候 一次性执行。

然后我接着调试,依旧CPU占用很高,但是 执行时间 变短了很多,基本上执行完一次只需要几分钟。

那么只剩下 SELECT 了。接着优化。因为我查询过程中判断条件过多。所以我以此针对 WHERE 的条件都加上了索引。

然后接着测试, MYSQL的CPU占用 会有起伏 从原来的 长时间占用190% 多,变为 40% ~ 120% 之间起伏。

并且 执行一遍仅仅需要两分钟,即可。

这里写出来供大家参考。

转载请保留本文链接:https://blog.526net.com/?p=2436

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注