MySQL LOAD XML 导入性能

标签 mysql xml

使用 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/

相关文章:

php - 如何在表格的所有列中进行搜索?

Android XML 到 JSON 的转换, bool 值包含在 ""内

xml - CFXML - 当enablecfoutputonly为 "Premature end of file"时为 "yes"

java - 在 Java 中使用 RELAX NG 模式验证 xml 文件(IDE - Eclipse)

android - 如何更改android中导航内容的颜色

php - 检查循环中是否存在 XML 元素

PHP/SQL 如何使我的查询包含在另一个表中还没有记录的结果?

sql - MySQL:如何获取不同类型的 n 个最新行

MySql:在记录不存在的情况下两次连接同一个表

php - 从表中检索主键数据