繁体   English   中英

mysql有效地执行数百万个INSERT语句

[英]mysql efficiently execute millions of INSERT statements

我知道我可能不是最有效的方式。 我有以XML格式存储的数据,我正在将XML数据解析为单独的INSERT INTO .. VALUES(..)语句,然后执行这些语句。 有没有一种好方法可以批量执行数百万个INSERT INTO语句?

我不能使用常规的SQL Server实用工具来导入XML数据,因为我在AWS上运行它。

任何建议表示赞赏!

使用多INSERT方法,您提供多组VALUES总是比单独执行它们更好。 您应该构造与max_allowed_packet设置一样大的语句,并且理想情况下将其调整为尽可能高。 2GB通常是它可以达到的最高速度,并且为了获得最大速度,您将需要至少以10-50MB大小的速度进行吊带。

LOAD DATA INFILE也是一个选项,但这通常比多INSERT方法快10-15%,并且要求数据以特定格式启动。 CSV或制表符分隔是最容易使用的,XML不是一个选项。

为获得最佳性能,请在插入大量数据之前禁用所有索引。 即使在空数据库模式的mysqldump快照中,您也可以看到其中的一些技巧。

要禁用索引,请在导入之前执行以下语句:

 ALTER TABLE `table_name` DISABLE KEYS;

然后导入后,重建它们:

 ALTER TABLE `table_name` ENABLE KEYS;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM