使用 LOAD XML
将 XML 数据导入 MySQL 表是个好主意吗?以后的 MySQL 版本(我使用的是 5.5.34)是否存在已知问题或显着的性能改进?
我当前的测试运行使用大约 50 MB 的 XML 和简单的空 InnoDB 表,每个表都有一个索引表明性能非常糟糕 - 在配备 SSD 的 Core i7 笔记本上每秒大约 3 到 8 次写入或 8 KB。鉴于这种性能,导入我的所有数据(20 mio 行)大约需要 80 天,而目标是大约 4 到 8 小时。
SQL 代码如下所示:
LOAD XML LOCAL INFILE 'import.xml'
REPLACE INTO TABLE assets ROWS IDENTIFIED BY '<asset>';
MySQL 服务器在 VMware Fusion 中的 CentOS 6.3 上运行。所有文件都位于该 VM 内,因此在导入期间不会访问主机 FS。
最佳答案
解决方案是使用 LOAD DATA INFILE 而不是 LOAD XML INFILE,这似乎在所有 MySQL 版本中都存在严重的性能问题。见评论。
这个变化对我来说不是什么大问题,因为我使用 XSLT 创建输入文件。 XML 会更容易、更灵活,但 XSLT 也允许创建纯文本输出 (CSV/TSV)。
关于MySQL LOAD XML 导入性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19030874/