2012-08-01 2 views
0

J'ai un problème (dû au temps) lors de l'insertion d'environ 13 000 enregistrements dans la base de données des périphériques.RhoMobile 13 000 insère des problèmes dus au temps

Est-il possible d'optimiser cela? Est-il possible de mettre tout cela dans une seule transaction (comme je crois qu'il est en train de créer une transaction par insert (ce qui a apparemment un effet diabolique sur la vitesse)).

Actuellement, cela prend environ 10 minutes, ce qui inclut la conversion de CSV en un hachage (cela ne semble pas être le goulot d'étranglement).

Bêtement Je n'utilise pas RhoSync ...

Merci

Répondre

0

Mettre en place une opération autour des inserts et livrez ensuite seulement à la fin.

De leur 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 

J'ai trouvé que cette technique soit une vitesse vertigineuse vers le haut.

0

Utilisez schéma fixe plutôt que de sac de propriétés, et vous pouvez utiliser une transaction (voir lien ci-dessous pour savoir comment).

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

Cette question a été réponse par quelqu'un d'autre, sur les groupes Google (HAYAKAWA Takashi)