我想将数百万条记录插入我的数据库,但速度非常缓慢,大约每小时只有40000个记录,我不认为我的硬件太慢,因为我发现磁盘IO速度低于2 MiB/s。 我有许多表格分散在不同的.sql文件中。 一个单一的记录也很简单,一个记录少于15列,一列少于30个字符。我是在使用mysql 5.3的archlinux下完成这项工作的。你们有什么想法吗?或者这个速度不算慢吗?
很可能是因为您插入记录的方式是这样的:
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2");
每次需要插入数据时都发送新的查询是性能不佳的。相反地,将这些查询合并成单个查询,像这样。
发送新的查询来插入数据会使性能下降,建议将这些操作合并成单个查询。
INSERT INTO `table1` (`field1`, `field2`) VALUES ("data1", "data2"),
("data1", "data2"),
("data1", "data2"),
("data1", "data2"),
("data1", "data2");
您还可以在MySQL文档中了解有关插入速度的更多信息。它明确描述如下。
table1
(field1
,field2
) VALUES ("data1", "data2"); INSERT INTOtable1
(field1
,field2
) VALUES ("data1", "data2"); ......(数百万行) - Cricket