我知道我可能不是这样做最有效的方式。我有以 XML 格式存储的数据,我将 XML 数据解析为单独的 INSERT INTO .. VALUES (..) 语句,然后执行这些语句。有没有一种好方法可以批量执行数百万条 INSERT INTO 语句?
我无法使用常规 SQL 服务器实用工具导入 XML 数据,因为我在 AWS 上运行它。
任何建议表示赞赏!
我知道我可能不是这样做最有效的方式。我有以 XML 格式存储的数据,我将 XML 数据解析为单独的 INSERT INTO .. VALUES (..) 语句,然后执行这些语句。有没有一种好方法可以批量执行数百万条 INSERT INTO 语句?
我无法使用常规 SQL 服务器实用工具导入 XML 数据,因为我在 AWS 上运行它。
任何建议表示赞赏!
使用 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;