【问题标题】:MySQL LOAD XML takes too long (System lock)MySQL LOAD XML 耗时太长(系统锁)
【发布时间】:2014-02-21 14:48:22
【问题描述】:

我的服务器上有 4 个本地 xml 文件,我尝试将它们全部加载到 4 个 Mysql 表中,如下所示:

LOAD XML LOCAL INFILE "file1.xml"
            REPLACE
            INTO TABLE `table1`
            CHARACTER SET "utf8"
            ROWS IDENTIFIED BY "<item>"

现在是奇怪的部分。

3 个 xml 文件已完美加载,但其中一个 xml 文件需要永远加载,如果我查看该过程,它会显示“系统锁定”。我认为它可能太大了(600MB),但即使将它分成 10 块并加载每一块也会得到几乎相同的结果。

这是有问题的 xml:

<item id="48121384">
    <name><![CDATA[BRIDGESTONE Blizzak Dm-v1 XL 285/50R20 116R]]></name>
    <shop_id>2465</shop_id>
    <category><![CDATA[362195]]></category>
    <price>30.67</price>
    <country>uk</country>
    <product_id>325937</product_id>
    <product_pid>395</product_pid>
    <ordering>27</ordering>
    <img><![CDATA[]]></img>
    <href><![CDATA[http://blah.com/price/48121384/p1317/xml/?t=1392794884&u=238221047]]></href>
    <description><![CDATA[]]></description>
</item>

以及我要放入的表(我尝试过 InnoDb 和 MyIsam - 同样的东西)

field          type    
id             int(11)     
name           varchar(255) 
shop_id        int(11)     
category       int(11)     
price          varchar(30)  
country        varchar(30)  
product_id     int(11)  
product_pid    int(11)  
ordering       int(11)  
img            varchar(255) 
href           text 
description    text 

【问题讨论】:

    标签: mysql xml file-io


    【解决方案1】:

    我找到的唯一解决方案是使用 CSV 而不是 XML。 CSV 工作得很好,甚至比 XML 快一点。

    【讨论】:

      【解决方案2】:

      您可以尝试将所有项目的子元素放入项目标签中。将它们用作属性。

      我不知道它为什么有效,但它确实有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        • 2013-04-08
        • 1970-01-01
        相关资源
        最近更新 更多