使用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。
答案 0 :(得分:1)
解决方案是使用LOAD DATA INFILE而不是LOAD XML INFILE,这似乎在所有MySQL版本中都存在严重的性能问题。见评论。
这个改变对我来说不是一个大问题,因为我正在使用XSLT来创建输入文件。 XML本来会更简单,更灵活,但XSLT也允许创建纯文本输出(CSV / TSV)。