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 - 使用 LOAD DATA LOCAL INFILE 加载 csv 文件到 MySQL 时如何限制 CPU 负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33887251/

相关文章:

php - 否则 Bootstrap 警报

php获取字符之间的字符串

php - SQL 按日期和时间排序不起作用

php - 通过phpMyAdmin(Wordpress)上传.sql文件后定位或建立MySQL UN和PW

python - 如何在 python 中使用 pandas 读取 csv 文件的所有行?

php - php短标签的混合

php - MySQL、PHP 和 AS3 - 根据 ID 显示内容

mysql - 如何使用mysql docker容器作为本地开发的mysql server?

javascript - 将 csv 文件内容加载到对象字典中

python - 如何在 to_csv 和 read_csv 之后获得一致的数据类型?