MySQL控制台在导入巨大的SQL文件时速度慢

时间:2010-06-02 09:30:59

标签: mysql sql console wamp

我通过My​​SQL控制台导入SQL的速度相当慢,而且,随着我们的SQL文件每天都在增加,我想知道是否有更快的方法可以更快地导入SQL文件。

不能选择更改为Oracle或其他系统,配置必须保持不变。

目前SQL文件是:1.5 GB。 我正在WAMP使用Apache 2.2.14,PHP 5.2.11和MySQL 5.1.41。

也许问题出在这里,导入是通过简单的方式完成的:

mysql -u username -p dbname < sqlfilename.sql

有什么建议吗?

4 个答案:

答案 0 :(得分:5)

在导入期间启用索引会降低服务器的爬网速度。 ALTER TABLE表名DISABLE KEYS;并且在导入之前和之后使用..ENABLE KEYS将提高导入速度,但是需要一些时间来重新创建索引,因此它可能不会是一个很大的速度增益。

此外,使用myisam表(与带有参照完整性选项的innodb相比)通常可以提供更好的性能,因为不涉及参考完整性开销。

就个人而言,我不使用mysql控制台的import语句,而是使用mysql -uUSER -pPASS DBNAME < file.sql导入sql文件,对我来说效果很好。

希望它有所帮助。

答案 1 :(得分:5)

试试这些http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html

这可能是一个自动提交问题,请关闭然后查看发生的事情。

SET autocommit=0 ; source <your dump file> ; COMMIT ;

答案 2 :(得分:2)

关闭自动提交是Bulk Data Loading for InnoDB Tables中为加速MySQL恢复操作而提出的一系列建议中的第一个。

您可以在恢复时手动关闭自动提交,而不是以包含所有必要语句的方式将MySQL数据转储到SQL文件中。

mysqldump的命令行参数是--no-autocommit。您还可以考虑添加--opt,它设置其他参数的组合以加速恢复操作。

以下是我使用它时包含--no-autocommit--opt的完整mysqldump命令行的示例:

mysqldump -hlocalhost -uMyUser -p'MyPassword' --no-autocommit --opt --default-character-set=utf8 --quote-names  MyDbName  >  dump.sql

有关这些参数的详细信息,请参阅reference of mysqldump

答案 3 :(得分:0)

我不确定这是否能解决你的问题,因为我不确定瓶颈在哪里......但是,我对免费Toad for MySQL工具作为替代MySQL的印象非常深刻管理控制台。它有很棒的导入工具,通常比标准的MySQL管理控制台好一些IMO。