我有一个包含两个表的SQL文件,共有大约600,000行。昨天,我尝试将文件导入Fedora 16上的MySQL数据库,导入文件需要2个多小时。在我的Windows PC上花了7分钟。我的Linux和Windows机器具有完全相同的硬件。我的几个朋友也试过了,他们有类似的经历。
我们使用的命令是:mysql -u root database_name < sql_file.sql
。
为什么速度会有这么大差异?
答案 0 :(得分:68)
我敢打赌,Fedora 16正在尊重事务/同步语义而Windows并不是。如果算一算,两小时内600,000次更新是每分钟5,000次。这与磁盘的转速相同。
您可以尝试将SET autocommit=0;
添加到导入文件的开头,然后COMMIT;
添加到结尾。有关详细信息,请参阅this page。
答案 1 :(得分:4)
为什么不将.sql文件导出为BULK INSERT
选项并导入它,在使用mysqldump进行备份时尝试这些选项
--extended-insert
:使用多行插入语句
--quick
:不要对行数据进行缓冲,如果表格很大则很好
注意:在生成.sql文件之前,请确保在my.cnf文件中增加max_allowed_packet
= 32M或更高的值。