3

Nokogiriを使用して、Rails3アプリのMySQLデータベースにXMLフィードから大量のデータを書き込んでいます。すべてが正常に機能していますが、私が望むよりも遅いです。

プロセスをスピードアップする方法はありますか?これは、私が使用しているスクリプトの簡略化されたバージョンです。

url = "http://example.com/urltoxml"
doc = Nokogiri::XML(open(url))
doc.xpath("//item").each do |record|

  guid = record.xpath("id").inner_text
  price = record.xpath("price").inner_text
  shipping = record.xpath("shipping").inner_text

  data = Table.new(
    :guid => guid,
    :price => price,
    :shipping => shipping
  )
  if price != ""
    data.save
  end

end

事前にThnx

4

1 に答える 1

1

あなたの問題はXMLの解析によるものではないと思いますが、レコードを1つずつDBに挿入することであり、これは非常にコストがかかります。

残念ながら、AFAIK Railsは、レコードを一括挿入するためのネイティブな方法を提供していません。かつてそれをした宝石がありましたが、私はそれに手を戻すことができません。

ただし、 「パフォーマンスを低下させることなくRailsにデータを大量に挿入する」とは、手動で行う方法に関する有益な洞察を提供します。

このようにした場合、単一の999億行のINSERTステートメントで終了したくない場合は、ノードをバッチで処理することを忘れないでください。

于 2012-11-28T18:07:47.537 に答える