J'ai essayé d'utiliser Spring 3.0 SimpleJdbcTemplate et il faut 5 minutes pour insérer 1500 enregistrements, alors que cela me prend quelques secondes. insérer en utilisant JDBC droit. Je ne sais pas ce que je fais mal.Spring JDBC vs JDBC
6
A
Répondre
6
Si vous créez un lot, pensez à utiliser le lot Spring - JdbcBatchItemWriter
avec les paramètres de taille de tronçon appropriés, qui chargeront ces 1500 enregistrements en moins d'une seconde.
1
Certaines choses de contrôle vaut:
- Les frais généraux pourrait être sur la transaction gérée par Spring au niveau de l'application. Regardez quel type de gestionnaire de transactions vous utilisez (recherchez un bean avec le nom
transactionManager
). Si vous utilisez JTA, c'est probablement là que réside votre problème. Comme c'est rapide avec JDBC, le goulot d'étranglement ne semble pas être le db. Selon la façon dont votre application utilise cette transaction, elle peut contenir tout en mémoire avant de terminer les 1500 requêtes et validations. Voyez-vous une grande différence dans l'utilisation de la mémoire (celle du printemps devrait être beaucoup plus élevée)? - Quel type de pool de connexions DB utilisez-vous dans les deux cas?
moyen rapide de profil de votre application:
Obtenez le pid - "jps -l"
mémoire: jmap -histo PID
(vérifier s'il y a une certaine forme de fuite de mémoire)
Vérifiez ce qui se passe sous le capot: jstack PID
(recherchez les appels de méthode lents ou récursifs)
-2
Comment utiliser
jdbcTemplate.batchUpdate(new String[]{sql});
Questions connexes
- 1. Spring, JDBC & MultiThreading
- 2. Spring JDBC DAO
- 3. java - POST vs JDBC
- 4. Spring Security 3.0 avec jdbc
- 5. Modèle Spring JDBC conditionnelle Insérer
- 6. Spring Jdbc atomicité avec table alter
- 7. Spring Framework JDBC avec DAO agrgegation/composition
- 8. Spring JDBC n'enregistre pas SQL avec log4j
- 9. Spring JDBC RowMapper avec Class Hiearchies
- 10. Spring Jdbc exécution de la requête
- 11. Transactions faciles en utilisant Spring JDBC?
- 12. Spring JDBC: Comment créer les tables?
- 13. simple wrapper jdbc
- 14. Connexion simplifiée JDBC
- 15. JDBC multithread
- 16. Problème de connexion JDBC
- 17. Lecture d'un blob avec Spring JDBC sans jeu de résultats
- 18. Spring est-il trop complexe pour les opérations JDBC?
- 19. Spring Jdbc Template + MySQL = TransientDataAccessResourceException: Argument invalide Valeur: Java.io.notSerializationException
- 20. Annulation de transaction sur les tests Spring JDBC
- 21. Connexion JDBC cryptée
- 22. JDBC- postgres, connexion refusée
- 23. Bizarre JDBC executeQuery exception
- 24. Exception SQL Server JDBC
- 25. JDBC + statement.setEscapeProcessing (false)
- 26. plaine jdbc et hibernate
- 27. API jdbc datatype/Référence
- 28. problème dans jdbc preparestatement
- 29. Codage de caractères JDBC
- 30. Programmation jdbc via oracle
pouvez-vous insérer votre code? – dierre
Ceci n'est pas une question, et ne nous fournit aucun code à examiner, comment voulez-vous que nous vous aidions? S'il vous plaît envisager de fournir plus de détails. – Andrew
Cela ne veut pas dire que cela prendrait 5 minutes à insérer, mais il y aura un délai si vous utilisez un cadre au-dessus de "straight jdbc". Postez vos requêtes/code afin que nous puissions voir ce qui se passe. –