43

我有一个 SQL 文件,其中包含两个表,总共大约 600,000 行。昨天,我尝试将文件导入到我在 Fedora 16 上的 MySQL 数据库中,导入文件花了 2 个多小时。在我的 Windows PC 上花了 7 分钟。我的 Linux 和 Windows 机器具有完全相同的硬件。我的几个朋友也尝试过,他们也有类似的经历。

我们使用的命令是:mysql -u root database_name < sql_file.sql.

为什么速度会有这么大的差异?

4

2 回答 2

74

我敢打赌,Fedora 16 尊重事务/同步语义,而 Windows 没有。如果你算一下,两小时内 600,000 次更新是每分钟 5,000 次。这与磁盘的旋转速度在同一个数量级。

您可以尝试添加SET autocommit=0;到导入文件的开头和COMMIT;结尾。请参阅此页面了解更多信息。

于 2012-04-19T11:35:58.550 回答
6

为什么不将 .sql 文件作为BULK INSERT选项导出并导入,在使用 mysqldump 进行备份时尝试这些选项

--extended-insert: 使用多行插入语句

--quick:不要缓冲行数据,如果表很大的话很好

注意:max_allowed_packet在生成 .sql 文件之前,请确保在 my.cnf 文件中增加 =32M 或更多的值。

于 2012-04-19T11:41:07.033 回答