Optimisation JDBC avec rewriteBatchedStatements
Le paramètre rewriteBatchedStatements dans JDBC permet une communication réseau efficace en combinant plusieurs requêtes en un seul paquet. Cela peut réduire considérablement la surcharge associée aux E/S réseau.
Comment fonctionne le traitement par lots
Avec rewriteBatchedStatements défini sur true, le pilote JDBC regroupera automatiquement plusieurs instructions dans un un seul paquet. Ceci est particulièrement utile pour l'envoi de requêtes d'insertion ou de mise à jour, où les données sont souvent répétitives et peuvent être regroupées efficacement.
Par exemple, considérons le code suivant :
<code class="java">try (Connection con = DriverManager.getConnection(myConnectionString, "root", "whatever")) { try (PreparedStatement ps = con.prepareStatement("INSERT INTO jdbc (`name`) VALUES (?)")) { for (int i = 1; i <= 5; i++) { ps.setString(1, "Lorem ipsum dolor sit amet..."); ps.addBatch(); } ps.executeBatch(); } }</code>
Sans traitement par lots, le pilote enverrait cinq instructions INSERT individuelles à la base de données. Cependant, avec rewriteBatchedStatements activé, il peut envoyer une seule instruction INSERT sur plusieurs lignes à la place :
<code class="sql">INSERT INTO jdbc (`name`) VALUES ('Lorem ipsum dolor sit amet...'),('Lorem ipsum dolor sit amet...')</code>
Éviter les problèmes de max_allowed_packet
La variable max_allowed_packet dans MySQL définit le maximum taille des paquets réseau. Si un paquet dépasse cette taille, la requête risque de ne pas s'exécuter correctement. Le pilote JDBC est conscient de cette limite et divisera automatiquement les gros paquets en paquets plus petits si nécessaire.
Par conséquent, les développeurs n'ont généralement pas à se soucier de max_allowed_packet, car le pilote le gérera automatiquement. Cependant, si une très grande taille de paquet est requise, le développeur devra peut-être ajuster la valeur max_allowed_packet sur le serveur MySQL pour l'adapter.
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!