Mentre jdbcTemplate.batchUpdate (...) è in esecuzione, posso vedere che il conteggio delle righe db viene aumentato gradualmente (eseguendo il conteggio (*) nella tabella), inizialmente 2k e poi 3k fino a 10k. 2k e 3k non sono numeri esatti a volte ottengo 2357 quindi 4567.Spring jdbcTemaplate come inviare la dimensione batch completa al server DB2 in un solo colpo?
Mi aspettavo 10 k righe (dimensione del lotto) da impegnare in un colpo. A mio avviso, se inizialmente ottengo il conteggio delle righe 0, il conteggio delle righe successive dovrebbe essere 10k. Non voglio uno per uno inserto per motivi di prestazioni, ecco perché la funzione di batchupdate utilizzata e sembra che non impegna tutto in uno scatto.
Desidero inviare dati (righe 10k) al server DB una sola volta per il mio lotto. perché c'è qualcosa che dovrei specificare nella configurazione?
Di seguito è riportato il modo in cui sto scrivendo l'aggiornamento batch di jdbcTemplate. il lotto di grandezza è 10k.
public void insertRows(...) {
...
jdbcTemplate.batchUpdate(query, new BatchPreparedStatementSetter(){
@Override public void
setValues(PreparedStatement ps, int i) throws SQLException {
...
}
@Override public int getBatchSize() {
if(data == null){
return 0;
}
return data.size();
}
});
}
Modifica: Aggiunto @Transactional al metodo isertRows stiil posso vedere lo stesso comportamento. usando Transnazionale si impegna dopo 10k righe, ma quando vedo contare usando con UR (seleziona count (*) da mytable con ur) mostra i dati che vengono aggiornati gradualmente (2k 4k così via fino a 10k). Ciò significa che i dati vengono inviati al server in blocchi (probabilmente uno ciao uno). Come posso inviare tutto in un colpo solo. This question suggerisce di essere ottenuto usando rewriteBatchedStatements in mysql, c'è qualcosa di simile che abbiamo in DB2.
Sto usando implementazione DataSource com.ibm.db2.jcc.DB2BaseDataSource
@tamasrev La domanda che hai fornito dice che non commette, sto dicendo che impegna prima ancora mi aspetto – Vipin
Oops, giudicati superficialmente. Siamo spiacenti, rimosso la bandiera. –
Se devo applicare le transazioni, allora cosa sta facendo l'aggiornamento batch? Posso farlo anche in un singolo aggiornamento. – Vipin