Maison  >  Article  >  Java  >  Comment « rewriteBatchedStatements » dans JDBC peut-il améliorer l'efficacité du réseau et gérer des paquets de grande taille ?

Comment « rewriteBatchedStatements » dans JDBC peut-il améliorer l'efficacité du réseau et gérer des paquets de grande taille ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 19:43:29611parcourir

How can `rewriteBatchedStatements` in JDBC Improve Network Efficiency and Handle Large Packet Sizes?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn