Ale*_*tau 2 mysql sql performance insert
我的数据包含大约30 000条记录.我需要将这些数据插入MySQL表中.我将这些数据分组打包1000并创建多个这样的插入:
INSERT INTO `table_name` VALUES (data1), (data2), ..., (data1000);
Run Code Online (Sandbox Code Playgroud)
如何优化此插入的性能?我每次可以插入超过1000条记录吗?每行包含大小约1KB的数据.谢谢.
您需要检查 mysql 服务器配置,并专门检查缓冲区大小等。
您可以从表中删除索引(如果有)以使其更快。一旦数据进入就创建索引。
看这里,你应该得到你需要的一切。
http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html
它说,一个带有多个值的插入语句比多个插入语句快得多。
尝试将批量插入包装在事务中.
START TRANSACTION
INSERT INTO `table_name` VALUES (data1), (data2), ..., (data1000);
COMMIT
Run Code Online (Sandbox Code Playgroud)
这可能会提高性能,我不确定mySQL是否可以部分提交批量插入(如果它不能,那么这可能不会真正帮助太多)
请记住,即使在1.5秒内,对于每个大小约为1k的30,000条记录,您的执行速度仍为20MB/s,实际上您可以根据硬件设置限制驱动器.
然后建议调查SSD或更改你的Raid设置或获得更快的机械驱动器(有很多关于使用安装在SSD上的SQL数据库的利弊的在线文章).