最近搞个项目,需要定时抓取数据。并且是多进程大批量插入。
两小时执行一次,刚开始没有分批处理,每次执行大约要操作十几万次MYSQL。其中 一半是插入操作。
调试过程中发现 CPU 一直保持满负荷状态,并且执行时间最慢两个多小时没有执行完。
查阅相关资料。现将解决办法记录如下:
首先是合并插入和查询语句,原来是需要插入一次就执行一次 INSERT 。
修正为INSERT INTO T (`id`,`name`) VALUES(),(),(),(),(),(),(),(),(); 这样一次插入多条。
UPDATE 也用 ; 号割离,然后 积攒到 200 条 的时候 一次性执行。
然后我接着调试,依旧CPU占用很高,但是 执行时间 变短了很多,基本上执行完一次只需要几分钟。
那么只剩下 SELECT 了。接着优化。因为我查询过程中判断条件过多。所以我以此针对 WHERE 的条件都加上了索引。
然后接着测试, MYSQL的CPU占用 会有起伏 从原来的 长时间占用190% 多,变为 40% ~ 120% 之间起伏。
并且 执行一遍仅仅需要两分钟,即可。
这里写出来供大家参考。
转载请保留本文链接:http://blog.526net.com/?p=2436
评论