我在一个php脚本中使用了load data LOCAL INFILE,这样用户就可以将csv文件加载到MySQL中(所有的数据都已经预先转义),这很好也很快,但是当一个脚本这样做的时候,它会使我的CPU负载达到100% --有时高达2-3分钟。
csv文件最多为5000行。
我认为问题的一部分是表现在很大,超过3000万行,所以重新索引使问题变得更加复杂。
有没有办法通过php脚本告诉MySQL限制负载?
谢谢你看一看。
发布于 2015-11-24 15:21:30
在基于Linux的服务器上,您可以使用PHP的proc_nice()函数来降低优先级,尽管有一些限制:
proc_nice(10);
根据您在其中运行脚本的环境,您可能需要在脚本末尾使用proc_nice(0);
将优先级设置回正常,以避免被卡在低优先级上。
一种更简单、麻烦更少的方法可能是在每个循环的末尾添加一个sleep()命令,这样处理器就有机会执行其他任务:
sleep(1);
发布于 2015-11-24 18:44:35
请先尝试导入唯一的数据结构,然后再尝试导入可避免延迟或连接丢失的数据。
尝试分块导入数据,而不是一次导入所有数据。这可以帮助您高效、快速地导入数据。
https://stackoverflow.com/questions/33887251
复制相似问题