Wie ist das JDBC-Batch-Update hilfreich? [geschlossen]

9

Jeder sagt, Stapelupdates reduzieren die Anzahl der JDBC-Aufrufe. Könnte jemand erklären, was "JDBC-Anruf" bedeutet und wie eine erhöhte Anzahl solcher Anrufe teurer ist als die gesamte Last in einem JDBC-Anruf.

    
cooper 10.01.2013, 18:38
quelle

3 Antworten

8

Umgangssprachlich, wenn Entwickler den Ausdruck JDBC-Aufruf verwenden, sprechen sie davon, Informationen über das Kabel an die Datenbank zu senden. Mit der Batch-Funktion der JDBC-API können Sie mehrere separate Vorgänge in einem einzigen Netzwerkaufruf übergeben, im Gegensatz zu einem Aufruf für jede SQL-Anweisung. Aus der JDBC-Spezifikation :

  

Die Stapelaktualisierungsfunktion ermöglicht einem Statement-Objekt das Senden einer Menge von   heterogene SQL-Anweisungen zusammen als eine Einheit oder Batch zu   die zugrunde liegende Datenquelle.

Bei PreparedStatement besteht der zusätzliche Vorteil, dass nur eine einzelne Anweisung erstellt werden muss. Dadurch können Sie die gleiche Abfrage mit mehreren Sets von Bindeparametern ausführen, ohne die Anweisung selbst mehrfach zum Stapel hinzuzufügen. Das Endergebnis ist weniger Netzwerkverkehr und der damit verbundene Overhead.

Ein Beispiel aus der Spezifikation:

%Vor%     
jonathan.cone 10.01.2013 18:55
quelle
3

Wie in IBM Dokumentation :

  

Die JDBC-Treiber, die JDBC 2.0 und höher unterstützen, unterstützen Stapel   Aktualisierung. Mit Batch-Aktualisierungen, anstatt Zeilen eines DB2 (R) zu aktualisieren   Tabelle für Zeile können Sie JDBC anweisen, eine Gruppe von Aktualisierungen auszuführen   gleichzeitig. Anweisungen, die in derselben Charge enthalten sein können   Aktualisierungen werden als batchbare Anweisungen bezeichnet.

     

Wenn eine Anweisung Eingabeparameter oder Hostausdrücke hat, können Sie   Fügen Sie diese Anweisung nur in einen Batch ein, der andere Instanzen des   gleiche Aussage. Diese Art von Charge wird als homogene Charge bezeichnet. Ob   Eine Anweisung hat keine Eingabeparameter, Sie können diese Anweisung in einschließen   ein Stapel nur, wenn die anderen Anweisungen im Stapel keine Eingabe haben   Parameter oder Host-Ausdrücke. Diese Art von Charge ist bekannt als   heterogene Charge. Zwei Anweisungen, die in demselben enthalten sein können   Batch sind als Batch-kompatibel bekannt.

    
knowbody 10.01.2013 18:58
quelle
1

beim Aufruf von JDBC Update Java-Programm Verbindung zum Datenbankserver und führen Sie die Abfrage, bedeutet dies für jedes Update Java-Programm Kontakt Datenbankserver und führen Sie die Abfrage. Gleichzeitig, wenn wir JDBC Batch-Update verwenden, müssen Java-Anwendung den Datenbankserver nur einmal kontaktieren und führen Sie alle Abfragen auf dem Datenbankserver und zurück zur Java-Anwendung.

Kurz gesagt, es wird die Rundreise zwischen Java-Anwendung und Datenbankserver reduzieren, normalerweise werden beide in verschiedenen Servern sein, so dass es viel in der Netzwerkressource hilft, daher die bessere Leistung zu erreichen.

    
Fahad 10.01.2013 19:04
quelle

Tags und Links