2009-07-30 18 views
10

Ho appena inserito 1 milione di record in una semplice tabella sqlite con cinque colonne. Ci sono volute 18 ore in java usando i driver jdbc! Ho fatto la stessa cosa in python2.5 e ci è voluto meno di un minuto. La velocità per le query selezionate sembra soddisfacente. Penso che questo sia un problema con i driver jdbc.Inserimento sqlite lento utilizzando i driver jdbc in java

C'è un driver più veloce per sqlite3 in java?

La velocità di inserimento di un numero elevato di righe è importante per il mio script di migrazione dello schema e preferisco non dover utilizzare uno script esterno per eseguire le migrazioni se non è necessario.

MODIFICA: risolto con connection.setAutoCommit (false); grazie Mark Rushakoff per avermi suggerito la soluzione :)

risposta

19

Hai avuto le tue domande di autocommitted? Questo potrebbe spiegare perché ci è voluto così tanto tempo. Prova a raggrupparli in un inizio/fine in modo che non debba eseguire un commit completo per ogni inserimento.

This page spiega la transazione di inizio/fine, mentre lo FAQ tocca inserti/autocommits.

+0

Questo ha fatto il trucco, grazie! –

+0

prestazioni migliorate 1000x ... Grazie – Ewoks

2

Se si desidera ottimizzare ulteriormente, è possibile esaminare insieme le query di inserimento batch. In questo modo è possibile modificare 1 milione di inserti in 1000 inserti di 1000 lotti.

Problemi correlati