php - 使用LOAD DATA LOCAL INFILE将CSV文件加载到MySQL中时,如何限制CPU负载?

原文 标签 php mysql csv load

我在php脚本中使用LOAD DATA LOCAL INFILE,以便用户可以将csv文件加载到MySQL中(所有数据均已预先转义),这既好又快速,但是当脚本执行此操作时,它会使我的CPU负载达到峰值该过程正在进行时为100%-有时长达2-3分钟。

csv文件最大为5000行。

我认为部分问题是表现在很大,超过3000万行,因此重新索引使问题更加复杂。

有没有办法通过php脚本告诉MySQL限制负载?

谢谢参观。

最佳答案

在基于Linux的服务器上,可以使用PHP的proc_nice()函数来降低优先级,尽管存在一些限制:

proc_nice(10);


根据运行环境的不同,您可能需要在脚本末尾使用proc_nice(0);将优先级设置回正常,以避免PHP停留在低优先级上。

一种更简单,更麻烦的方法是在每个循环的末尾简单地添加sleep()命令,以便处理器有机会执行其他任务:

sleep(1);

相关文章:

php - PDO的setFetchMode(PDO :: FETCH_ASSOC)的全局设置[重复]

php - 覆盖默认的PHP功能

php - 将工匠注入服务类

php - 要解决“条件分配”使用!== false减慢脚本速度。为什么?

php - 使用PHP PDO从CSV错误插入循环

java - 如何用前导零写入csv?

javascript - Laravel -如何包含外部JS文件(包含Ajax)

php - 如何获得星号通话指标? [关闭]

mysql - 设置MySQL / MariaDB galera群集时出现问题

python - 递增字符串(数字)以总计并打印