J'ai remarqué le comportement suivant.Java JDBC clearBatch() et la mémoire tas
J'ai un fichier d'environ 3 Mo contenant plusieurs milliers de lignes. Dans les lignes, je diviser et créer une déclaration préparée (environ 250 000 déclarations).
Ce que je fais est:
preparedStatement
addBatch
do for every 200 rows {
executeBatch
clearBatch().
}
à la fin
commit()
L'utilisation de la mémoire augmente à environ 70 Mo sans erreur de dépassement de mémoire. Est-il possible de réduire l'utilisation de la mémoire? et ont le comportement transactionnel (si tout échoue, tout échoue). J'ai été capable d'abaisser la mémoire en faisant un commit avec les executeBatch
et clearBatch
... mais cela entraînera une insertion partielle de l'ensemble total.
Cela pourrait être très dépendante de la qualité du pilote JDBC - lequel sont vous utilisez? – skaffman
J'ai changé de 200 lignes à 10000 et le temps d'exécution est maintenant de 37 secondes. On dirait que la même taille est utilisée. J'utilise le H2 org.h2.jdbcx.JdbcConnectionPool les données sont stockées sous forme de fichier .. pas en mémoire. Je tente de construire une application locale sans serveur de base de données comme Oracle, MySQL, etc. – Firone
Etes-vous certain que l'utilisation de la mémoire élevée est liée au traitement de la base de données, et non à l'E/S de fichier? – Timothy