0

デバイス データベースに約 13,000 レコードを挿入するときに (時間が原因で) 問題が発生しました。

これを最適化する方法はありますか?これらすべてを1つのトランザクションに入れることは可能ですか(現在、挿入ごとに1つのトランザクションを作成していると思われます(明らかに速度に悪魔のような影響があります))。

現在、これには約 10 分かかります。これには、CSV のハッシュへの変換が含まれます (これはボトルネックではないようです)。

愚かなことに、私はRhoSyncを使用していません...

ありがとう

4

2 に答える 2

0

挿入の周りにトランザクションを設定し、最後にのみコミットします。

彼らのFAQから。

http://docs.rhomobile.com/faq#how-can-i-seed-a-large-amount-of-data-into-my-application-with-rhom

db = ::Rho::RHO.get_src_db('Model')
db.start_transaction
begin
  items.each do |item|
    # create hash of attribute/value pairs
    data = {
      :field1 => item['value1'], 
      :field2 => item['value2'] 
    } 
    # Creates a new Model object and saves it
    new_item = Model.create(data)
  end
 db.commit
rescue
 db.rollback
end

この手法は非常に高速であることがわかりました。

于 2012-08-11T03:24:43.700 に答える
0

プロパティ バッグではなく固定スキーマを使用すると、1 つのトランザクションを使用できます (方法については、以下のリンクを参照してください)。

http://docs.rhomobile.com/rhodes/rhom#perfomance-tips .

この質問は、Google グループ (早川隆) で別の人が回答したものです。

于 2012-08-02T01:58:00.847 に答える