Maison > base de données > tutoriel mysql > Comment `rewriteBatchedStatements=true` optimise-t-il le traitement par lots JDBC ?

Comment `rewriteBatchedStatements=true` optimise-t-il le traitement par lots JDBC ?

Patricia Arquette
Libérer: 2025-01-14 10:54:44
original
573 Les gens l'ont consulté

How Does `rewriteBatchedStatements=true` Optimize JDBC Batch Processing?

Optimisation du traitement par lots JDBC avec rewriteBatchedStatements=true

Le paramètre JDBC rewriteBatchedStatements=true améliore considérablement l'efficacité du traitement des données par lots en consolidant plusieurs instructions SQL en une seule transmission réseau, réduisant ainsi la latence du réseau.

L'activation de ce paramètre demande au pilote JDBC de regrouper de nombreuses requêtes en un seul paquet plutôt que de les envoyer individuellement. Prenons l'exemple suivant, où des lignes individuelles sont insérées dans la table « jdbc » à l'aide d'instructions INSERT distinctes :

<code class="language-java">try (Connection con = ...; PreparedStatement ps = con.prepareStatement("INSERT INTO jdbc (`name`) VALUES (?)")) {
    for (int i = 1; i < 1000; i++) {
        ps.setString(1, "Line " + i + ": ...");
        ps.addBatch();
    }
    ps.executeBatch();
}</code>
Copier après la connexion

Avec rewriteBatchedStatements=true activé, le pilote JDBC transmet un seul paquet contenant une instruction INSERT combinée comme ceci :

<code class="language-sql">INSERT INTO jdbc (`name`) VALUES ('Line 1: ...'), ('Line 2: ...'), ... ,('Line 999: ...')</code>
Copier après la connexion

Il est essentiel que le pilote MySQL Connector/J (et les autres pilotes conformes) respecte les paramètres max_allowed_packet du serveur. Il vérifie cette limite lors de la connexion et ajuste dynamiquement la taille du lot pour éviter de dépasser la taille maximale des paquets. Si un seul INSERT à plusieurs lignes s'avère trop volumineux, le pilote le fragmente automatiquement en paquets plus petits et conformes.

En exploitant rewriteBatchedStatements=true et en configurant une valeur max_allowed_packet appropriée, les développeurs peuvent améliorer considérablement les performances d'interaction avec les bases de données pour les opérations par lots, en minimisant la surcharge du réseau et en maximisant le débit.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal