Optimierung der JDBC-Batch-Einfügungsleistung
Das Einfügen großer Datenmengen in eine MySQL-Datenbank erfordert eine effiziente Stapelverarbeitung, um eine optimale Leistung sicherzustellen. Auch wenn das Batch-Einfügen von 1 Million Datensätzen auf einmal sinnvoll erscheint, gibt es Techniken, um diesen Prozess weiter zu optimieren.
Verstehen des Problems
Der bereitgestellte Code verwendet eine vorbereitete Anweisung zum Einfügen von Werten in eine Tabelle, es werden jedoch nicht zwei Schlüssel genutzt Eigenschaften:
Optimieren der Verbindung
Um diese Optimierungen zu aktivieren, legen Sie beide Eigenschaften in der Verbindungs-URL fest:
Connection c = DriverManager.getConnection("jdbc:mysql://host:3306/db?useServerPrepStmts=false&rewriteBatchedStatements=true", "username", "password");
Geänderter Code
Mit diesen Optimierungen ist der aktualisierte Code wird zu:
try { // Disable auto-commit c.setAutoCommit(false); // Create a prepared statement String sql = "INSERT INTO mytable (xxx), VALUES(?)"; PreparedStatement pstmt = c.prepareStatement(sql); Object[] vals=set.toArray(); for (int i=0; i<vals.length; i++) { pstmt.setString(1, vals[i].toString()); pstmt.addBatch(); } // Execute the batch int [] updateCounts = pstmt.executeBatch(); System.out.append("inserted "+updateCounts.length); } catch (SQLException e) { e.printStackTrace(); }
Fazit
Durch das Festlegen der Eigenschaften „useServerPrepStmts“ und „rewriteBatchedStatements“ kann der Batch-Einfügungsprozess deutlich optimiert und die benötigte Zeit reduziert werden um große Datenmengen einzufügen.
Das obige ist der detaillierte Inhalt vonWie kann ich JDBC-Batch-Einfügungen für maximale MySQL-Leistung optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!