2009-07-30 7 views
10

Je viens d'insérer 1million d'enregistrements dans une table simple sqlite avec cinq colonnes. Il a fallu 18 heures en java en utilisant les pilotes jdbc! J'ai fait la même chose dans python2.5 et cela a pris moins d'une minute. La vitesse pour les requêtes sélectionnées semble bien. Je pense que c'est un problème avec les pilotes jdbc.insertion lente sqlite en utilisant les pilotes jdbc en Java

Y at-il un pilote plus rapide pour sqlite3 en Java?

La vitesse d'insertion d'un grand nombre de lignes est importante pour mon script de migration de schéma, et je préfère ne pas avoir à utiliser un script externe pour effectuer les migrations si je n'ai pas à le faire.

EDIT: corrigé avec connection.setAutoCommit (false); remercie Mark Rushakoff pour m'indiquer à la solution :)

Répondre

19

Avez-vous vos questions autocommitted? Cela pourrait expliquer pourquoi cela a pris si longtemps. Essayez de les placer dans un début/une fin afin de ne pas avoir à effectuer un commit complet pour chaque insertion.

This page explique la transaction début/fin, tandis que FAQ touche les insertions/autocommits.

+0

Cela a fait l'affaire, merci! –

+0

performance améliorée 1000x ... Merci – Ewoks

2

Si vous souhaitez optimiser davantage, vous pouvez regrouper vos requêtes d'insertion. Vous pouvez donc remplacer 1 million d'inserts par 1000 inserts de 1000 lots.

Questions connexes