【发布时间】:2018-02-17 15:22:32
【问题描述】:
我正在尝试使用这样编写的 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 是否有某种隐藏限制?
【问题讨论】:
-
一定是另外一回事,可能和MySQL有关,因为你的最大执行时间是30秒(现在是60秒)但是你说脚本运行了5分钟才超时,所以看起来PHPMyAdmin 正在以某种方式解决这个限制。另外,我不确定您所说的“职位”是什么意思,但在五分钟内插入 850.000 行并不是一个坏数字。
-
我也不知道位置是什么意思,但这就是每次脚本停止时的意思。我认为它接近等同于“角色”的意思。这意味着不,不是 850,000 行,而是少于 4,000
-
在这种情况下,是的,对于一个包含十几个字段的表中的 4000 行来说,5 分钟已经很多了,IMO 这表明 MySQL 存在问题。
标签: mysql sql phpmyadmin