JDBCs rewriteBatchedStatements-Konfiguration optimiert den Netzwerk-Overhead, indem mehrere Abfragen in ein einziges Paket gepackt werden. Dies wirft Bedenken hinsichtlich des max_allowed_packet-Limits des MySQL-Servers auf.
Reduzieren des Netzwerk-Overheads mit RewriteBatchedStatements
Wenn rewriteBatchedStatements auf true gesetzt ist, kombiniert JDBC Abfragen in einem einzigen Netzwerkpaket. Zum Beispiel:
<code class="java">ps.setString(1, "..."); ps.addBatch(); ps.setString(1, "..."); ps.addBatch(); ps.executeBatch();</code>
ohne rewriteBatchedStatements:
<code class="sql">INSERT INTO jdbc (`name`) VALUES ('Line 1: ...') INSERT INTO jdbc (`name`) VALUES ('Line 2: ...')</code>
mit rewriteBatchedStatements:
<code class="sql">INSERT INTO jdbc (`name`) VALUES ('Line 1: ...'),('Line 2: ...')</code>
JDBCs Kenntnis von max_allowed_packet
Ja, JDBC kennt den max_allowed_packet-Wert und passt die Größe der kombinierten Abfragen entsprechend an.
Beispiel
Durch die Aktivierung des allgemeinen Protokolls von MySQL können Sie JDBC beobachten Überprüfung von max_allowed_packet bei der Verbindung. Wenn Sie max_allowed_packet außerdem auf einen niedrigen Wert festlegen, teilt JDBC Stapelabfragen in kleinere Pakete auf, wenn die Gesamtgröße den Grenzwert überschreitet.
Das obige ist der detaillierte Inhalt vonWie verwaltet JDBC Batch-Anweisungen mit dem max_allowed_packet-Limit von MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!