MYSQL:导入大数据库时出现问题(非常慢)

时间:2015-10-01 08:06:40

标签: mysql database import dump

我想将一个非常大的SQL文件导入MySql(30GB)。

我试过bigdump.php(外键有些错误)脚本和简单的导入。之后我尝试通过命令行执行此操作:

(mysql -u username -p database_name < file.sql)

2小时后,我有一个9 GB的数据库。然后又过了10个小时,我有一个10.1 GB的数据库。

现在看来这个过程正在运行,但速度很慢(每小时200000行/ 100MB)。

如何解决此问题? 谢谢

2 个答案:

答案 0 :(得分:1)

这很可能是由于MySQL需要检查每一行的关键约束。但是,由于您(希望)已经知道该文件不包含约束违规,您可能希望关闭一些检查。 MySQL有一个关于Bulk Data Loading for InnoDB TablesSpeed of INSERT Statements的手册页。

您通常要做的是将这些命令添加到.sql文件的顶部:

SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;

这些到底:

COMMIT;
SET unique_checks=1;
SET foreign_key_checks=1;

您可以在MySQL CLI中执行此操作,而无需直接编辑.sql文件:

SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
SOURCE yourbigfile.sql;
COMMIT;
SET unique_checks=1;
SET foreign_key_checks=1;

请注意,此不会与bigdump.php一起使用,因为该脚本不会记住每个块之间的这些设置。我认为bigdump.php在使用包含外键的转储时效果不会很好。

答案 1 :(得分:0)

尝试压缩数据库,然后通过命令行上传。