Maison >base de données >tutoriel mysql >Comment « rewriteBatchedStatements=true » optimise-t-il les performances du réseau MySQL JDBC ?
Optimisation des performances du réseau MySQL JDBC avec rewriteBatchedStatements=true
Le pilote JDBC (Java Database Connectivity) offre des gains de performances substantiels via le paramètre rewriteBatchedStatements=true
. Ce paramètre permet au pilote de consolider plusieurs requêtes de base de données en une seule transmission réseau, réduisant ainsi considérablement la surcharge du réseau.
Le paramètre max_allowed_packet
de MySQL dicte la taille maximale des paquets entrants. Si un paquet de requêtes par lots dépasse cette limite, des erreurs peuvent se produire. Cependant, le pilote JDBC gère cela intelligemment : il détermine dynamiquement max_allowed_packet
et ajuste sa stratégie de traitement par lots pour éviter de dépasser la limite.
Pour confirmer ce comportement, activez le journal général MySQL et surveillez la connexion JDBC. Vous observerez Connector/J récupérer max_allowed_packet
et adapter son traitement par lots en conséquence.
Vous trouverez ci-dessous un exemple de code illustrant rewriteBatchedStatements=true
en action :
<code class="language-java">String connectionString = "jdbc:mysql://localhost:3307/mydb?" + "useUnicode=true&characterEncoding=UTF-8" + "&rewriteBatchedStatements=true"; try (Connection con = DriverManager.getConnection(connectionString, "root", "whatever")) { try (PreparedStatement ps = con.prepareStatement("INSERT INTO jdbc (`name`) VALUES (?)")) { for (int i = 1; i <= 1000; i++) { ps.setString(1, "Name" + i); ps.addBatch(); } ps.executeBatch(); } }</code>
Sans rewriteBatchedStatements=true
, ce code enverrait des relevés INSERT
individuels. Une fois activé, JDBC les regroupe efficacement en une seule INSERT
multiligne, minimisant ainsi considérablement le trafic réseau.
Par conséquent, JDBC garantit une gestion efficace des requêtes par lots dans MySQL, offrant des améliorations de performances et une compatibilité transparente sans nécessiter l'intervention manuelle du développeur. Le pilote gère intelligemment la taille des lots en fonction du paramètre max_allowed_packet
du serveur.
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!