mysql - 什么限制了 PHP 在超时前执行的 SQL 语句的数量?

标签 mysql sql phpmyadmin

我正在尝试使用如下编写的 SQL 语句将大量记录导入到我的表中:

INSERT INTO itemlist(UPC_Case,Pack,Size,Description,Weight_Case,UPC_Retail,TI,HI,MCL,CM,GSC,FL,HAN) VALUES (<values>);

其中一长串位于名为 itemlist insert.sql 的文本文件中

我决定使用 phpmyadmin 来导入这些,但整个文件无法上传,所以我将其拆分并压缩,当我运行导入时,它运行了几分钟后才通过 ~3850 条记录(~850,000 个位置) ) 在超时之前,这确实让我感到震惊,因为做太少的时间太长了 3850 条记录似乎是非常少量的数据,需要在大约 5 分钟内处理(我的意思是那一定是什么,>1MB?),所以我认为与脚本执行相关的 php 设置对于这种导入必须设置得太低,所以我遵循了 this post并更改了他们提到的设置:

/etc/php/7.0/apache2/php.ini中:

post_max_size = 30M (was 8M)
upload_max_filesize = 30M (was 2M)
memory_limit = 1G (was 128M)
max_execution_time = 60 (was 30)
max_input_time = 120 (was 60)

然后我重新启动了 apache:sudo systemctl restart apache2

我知道已经应用了设置,因为最大文件大小确实发生了变化,这意味着我不必压缩我的文件,我认为这与其他变化相结合,不仅有助于更快地处理 SQL 语句,而且在用完之前它还有两倍的时间;这意味着在脚本超时之前至少会处理两倍的数量,对吗?

但是一点改善都没有。在超时之前,phpmyadmin 仍然只能处理 ~3850 条记录(~850,000 个位置)。

为什么没有改进,是什么限制了处理的语句数量,因为它不是任何 PHP 设置。 phpmyadmin 是否有某种隐藏的限制?

最佳答案

PHPMyAdmin 不是专为将大文件导入 Mysql 而设计的工具。

尝试使用 mysql命令行工具。

对于 Unix/Mac:

mysql -u {username} -p{password} {database_name} < import_file.sql

对于所有操作系统:

mysql -u {username} -p{password} -e "\. import_file.sql" {database_name}

关于导入慢的可能原因,通常是:表已经有很多记录,表上的唯一索引,触发器,服务器慢,连接慢。

关于mysql - 什么限制了 PHP 在超时前执行的 SQL 语句的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46120891/

相关文章:

javascript - 通过 JQuery 运行外部 php mysql 查询时出错

PHP 表单未发布到 SQL 数据库

MySQL 事件调度程序每天运行 10 次

mysql - 通过大量 SQL 调用来加速缓慢的函数

PHP搜索功能让我的网站崩溃

SQL:优化问题,有行吗?

mysql - 从同一个表中的不同列计算相同的值

php - 显示下拉列表中的结果

mysql - 从 MSSQL 转换为 MySQL

sql - Mysql 查询 : If value(s) exist(s) in column, 只选择值,否则全选