mysql高效地执行数百万条INSERT语句

mysql高效地执行数百万条INSERT语句,mysql,xml,amazon-web-services,Mysql,Xml,Amazon Web Services,我知道我这样做可能不是最有效的方式。我将数据存储为XML格式,并将XML数据解析为单个INSERT into。。值(..)语句,然后执行这些语句。有没有一种很好的方法可以批量执行数百万条INSERT INTO语句 我无法使用常规SQL server实用工具导入XML数据,因为我正在AWS上运行此工具 任何建议都将不胜感激 使用multiINSERT方法,即提供多组值,总比单独执行要好。您应该构造尽可能大的max\u allowed\u packet设置的语句,并理想地将其调整为尽可能高。2GB通

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

我无法使用常规SQL server实用工具导入XML数据,因为我正在AWS上运行此工具


任何建议都将不胜感激

使用multi
INSERT
方法,即提供多组
值,总比单独执行要好。您应该构造尽可能大的
max\u allowed\u packet
设置的语句,并理想地将其调整为尽可能高。2GB通常是它能达到的最高速度,为了获得最大的速度,你会希望至少有10-50MB大小的块

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

为了获得最佳性能,请在插入大量数据之前禁用任何索引。您甚至可以在空数据库模式的
mysqldump
快照中看到这些技巧

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

 ALTER TABLE `table_name` DISABLE KEYS;
然后,在导入后,要重建它们:

 ALTER TABLE `table_name` ENABLE KEYS;

尝试
在文件中加载数据
以进行大量插入(aws应可以)。这里有一些参考:好的,谢谢!我现在正在使用具有多组值的多重插入。你能详细说明一下“最大允许数据包大小”的注释吗?有一个服务器配置参数,用于说明语句的大小,称为
max\u allowed\u packet
。如果50MB查询对您最有效,那么不要羞于干扰它。通过相应地调整参数,确保服务器不会因为太大而拒绝它们。顺便说一下,感谢@platforms提供了关于禁用索引的代码片段。