He intentado usar la primavera 3.0 SimpleJdbcTemplate y me lleva 5 minutos insertar 1500 registros, mientras que me toma unos segundos. para insertar usando JDBC directo. No estoy seguro de lo que estoy haciendo mal.Spring JDBC vs JDBC
6
A
Respuesta
6
Si está construyendo un lote, considere usar el lote de primavera - JdbcBatchItemWriter
con la configuración de tamaño de porción adecuada, que cargará estos 1500 registros en menos de un segundo.
1
Algunas cosas vale la pena mirar:
- La sobrecarga podría estar en la transacción gestionada por la primavera en el nivel de aplicación. Mire qué tipo de administrador de transacciones está usando (busque un bean con el nombre
transactionManager
). Si está utilizando JTA, probablemente sea allí donde se encuentre su problema. Como es rápido con JDBC, el cuello de botella no parece ser el DB. - Dependiendo de cómo su aplicación esté usando esa transacción, podría contener todo en la memoria antes de que finalice las 1500 solicitudes y confirmaciones. ¿Ves una gran diferencia en el uso de la memoria (la primavera uno debería ser mucho mayor)?
- ¿Qué tipo de grupo de conexión de base de datos está utilizando en cualquiera de los casos?
manera rápida al perfil de su aplicación:
Consigue la memoria pid - "jps -l"
: jmap -histo PID
(compruebe si hay alguna forma de pérdida de memoria)
Comprobar lo que está pasando bajo el capó: jstack PID
(busque llamadas a métodos lentos o recursivos)
-2
¿Qué le parece usar
jdbcTemplate.batchUpdate(new String[]{sql});
Cuestiones relacionadas
- 1. Diferencia entre Spring JDBC Vs Plain JDBC?
- 2. Spring Hibernate Vs jdbc template vs spring orm
- 3. ORM Technologies vs JDBC?
- 4. Spring-JDBC como biblioteca independiente
- 5. Relaciones entre Spring, Hibernate, JDBC
- 6. Transacciones fáciles usando Spring JDBC?
- 7. Soluciones ORM (JPA; Hibernate) vs. JDBC
- 8. spring jdbc ¿Cómo se detecta la excepción?
- 9. JDBC portátil vs SQLite en Android
- 10. JDBC get/setObject vs. get/setSpecificType
- 11. Conexión JDBC- Class.forName vs Class.forName(). NewInstance?
- 12. sqljdbc: JDBC sqljdbc.jar controlador Vs sqljdbc4.jar
- 13. Spring jdbc: embedded-database no puede acceder al controlador jdbc en JBoss AS 7
- 14. contenedor jdbc simple
- 15. multiproceso JDBC
- 16. Paginación JDBC
- 17. Cómo obtener el objeto de conexión actual en Spring JDBC
- 18. ¿Spring JDBC brinda protección contra ataques de inyección SQL?
- 19. Cómo pasar la conexión JDBC sin utilizar Spring/JPA/Hibernate
- 20. ¿Cómo funciona jdbc?
- 21. Unión interna SQLite/JDBC
- 22. Java - alternativas JDBC
- 23. Java JDBC ignora setFetchSize?
- 24. Python - Conexión a JDBC
- 25. Compatible con Android JDBC
- 26. Java: Oracle XMLType + JDBC
- 27. ¿Cómo usa Hibernate JDBC?
- 28. Conexión JDBC segura
- 29. Codificación de caracteres JDBC
- 30. Java JDBC: Reply.fill()
¿Se puede pasar el código? – dierre
Esto no es una pregunta, ni proporciona ningún código para que escudriñamos, ¿cómo espera que lo ayudemos? Por favor, considere proporcionar más detalles. – Andrew
No dice que debe tardar 5 minutos en insertarse, pero habrá un retraso cuando utilice cualquier marco de trabajo sobre "jdbc directo". Publique sus consultas/código para que podamos ver lo que está sucediendo. –