2011-09-01 15 views
8

Ecco il punto:Inserimento batch JDBC SLOW! Voglio dire, DAVVERO LENTAMENTE?

  1. creo una connessione conn utilizzando il DriverManager
  2. ho impostato conn.autoCommit(false);
  3. Poi ho PreparedStatement pStat = conn.prepareStatement(insert_string_with_parameter);
  4. ho impostato diversi parametri con pStat.set ... poi aggiungo il lotto con pStat.addBatch();
  5. Ogni 10000 righe (chiamo addBatch() 10000 volte), chiamo pStat.executeBatch();
  6. Non sono sicuro se necessario, ma che io chiamo anche pStat.clearBatch() subito dopo

Anche se tutto quanto sopra suona bene a me, questo è LENTO !!!.

Ho una media di soli 35 record (solo 8 colonne in totale, solo una chiave primaria auto-incrementante tecnica e alcuni vincoli non nulli) al secondo. Calcolo che mi ci vorrebbe una settimana per inserire tutte le mie righe da 20M ...

Sto facendo qualcosa di sbagliato?

Quante righe dovrei provare ad aggiungere ad ogni ciclo batch? Sono 10000 troppi?

+0

Ho provato anche con 1000 righe al momento, ma non ho visto alcun miglioramento significativo ... – Gevorg

+6

Si prega di mostrare SQL, schema e indicare indici e trigger che sono sulla tabella (s) coinvolti. – Bohemian

+0

nessun indice e nessun trigger. È la tabella più semplice di sempre ... – Gevorg

risposta