我有包含大约30,000条记录的数据。我需要将这些数据插入到MySQL表中。我将这些数据按照每1000个为一组进行分组,并创建多个如下所示的插入操作:
INSERT INTO `table_name` VALUES (data1), (data2), ..., (data1000);
如何优化此插入操作的性能?我能否一次性插入1000条以上记录?每行数据大小约为1KB。谢谢。
我有包含大约30,000条记录的数据。我需要将这些数据插入到MySQL表中。我将这些数据按照每1000个为一组进行分组,并创建多个如下所示的插入操作:
INSERT INTO `table_name` VALUES (data1), (data2), ..., (data1000);
START TRANSACTION
INSERT INTO `table_name` VALUES (data1), (data2), ..., (data1000);
COMMIT
这可能会提高性能,但我不确定MySQL是否可以部分提交批量插入(如果不能,则这可能帮助不大)
请记住,即使是1.5秒,对于每个大小约为1k的30,000条记录,您正在进行20MB/s的提交速度,取决于您的硬件设置,实际上可能会受到驱动器限制。
建议您调查一下SSD或更改RAID设置,或者获取更快的机械驱动器(有很多关于使用安装在SSD上SQL数据库的利弊的在线文章)。
这是一次性操作吗?
如果是的话,只需为每个数据元素生成一个SQL语句,并在服务器上执行它们。 3万个数据元素不应该需要很长时间,您将拥有最简单的输入数据的方法。