0

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

我无法使用常规 SQL 服务器实用工具导入 XML 数据,因为我在 AWS 上运行它。

任何建议表示赞赏!

4

1 回答 1

2

使用 multiINSERT方法,你提供多组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;
于 2012-11-06T20:02:12.130 回答