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

时间:2012-11-06 19:26:34

标签: mysql xml amazon-web-services

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

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

任何建议都表示赞赏!

1 个答案:

答案 0 :(得分:2)

使用多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;