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