Este es el trato:¡El lote de JDBC es LENTO! Quiero decir, ¿REALMENTE LENTO?
- puedo crear una conexión con el
conn
DriverManager
- que establecer
conn.autoCommit(false);
- Entonces tengo
PreparedStatement pStat = conn.prepareStatement(insert_string_with_parameter);
- puedo configurar varios parámetros con pStat.set ... entonces añado el lote con
pStat.addBatch();
- Cada 10000 filas (llamo
addBatch()
10000 veces), llamo alpStat.executeBatch();
- No estoy seguro si es necesario, pero que llamo también
pStat.clearBatch()
justo después
Incluso si todo lo anterior suena bien para mí, esto es LENTO !!!.
Tengo un promedio de solo 35 registros (solo 8 columnas en total, solo una clave principal de autoincrementación técnica y algunas restricciones no nulas) por segundo. Calculo que me llevaría una semana insertar todas mis filas de 20M ...
¿Estoy haciendo algo mal?
¿Cuántas filas debo tratar de agregar en cada ciclo de lote? ¿Son 10000 demasiados?
Lo intenté también con 1000 filas en ese momento, pero no vi ninguna mejora significativa ... – Gevorg
Por favor, muestre el SQL, el esquema e indique los índices y desencadenantes que están en la (s) tabla (s) involucradas. – Bohemian
sin índices ni disparadores. Es la tabla más simple que haya existido ... – Gevorg