Optimisation des INSERTS par lots avec JDBC
Les applications Java utilisant JDBC simple pour exécuter des requêtes INSERT sont souvent confrontées à des problèmes de performances en raison de la latence du réseau. Bien que le traitement par lots soit activé pour réduire les latences, les requêtes sont toujours exécutées séquentiellement en tant qu'INSERT distincts. Cet article explore les techniques d'INSERT par lots efficaces pour résoudre ce problème.
Réduction des INSERTs
Considérez le scénario suivant :
insert into some_table (col1, col2) values (val1, val2) insert into some_table (col1, col2) values (val3, val4) insert into some_table (col1, col2) values (val5, val6)
Une approche d'optimisation est pour réduire plusieurs INSERT en une seule requête :
insert into some_table (col1, col2) values (val1, val2), (val3, val4), (val5, val6)
En combinant des INSERT, moins de réseau des allers-retours sont nécessaires, ce qui entraîne une amélioration des performances.
Utilisation de PreparedStatements
Une autre technique clé consiste à utiliser PreparedStatements pour mettre en cache le plan de requête. Le code suivant démontre son utilisation dans une opération INSERT par lots :
PreparedStatement ps = c.prepareStatement("INSERT INTO employees VALUES (?, ?)"); ps.setString(1, "John"); ps.setString(2, "Doe"); ps.addBatch(); ps.clearParameters(); ps.setString(1, "Dave"); ps.setString(2, "Smith"); ps.addBatch(); ps.clearParameters(); int[] results = ps.executeBatch();
Conseils supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!