Can anyone tell me what I'm doing wrong I'm executing 350 inserts in a mysql and it's taking like 40 secs.
Here is the code
long t0 = System.currentTimeMillis();
Connection con = connectionProvider.getConnection();
PreparedStatement s = con.prepareStatement("insert into domkee.friends(idFriends,friend1Id,friend2Id,friend2Name) values(?,?,?,?)");
con.setAutoCommit(false);
for (Friend f : friends) {
s.setLong(1, 0);
s.setLong(2, f.getFriend1Id());
s.setLong(3, f.getFriend2Id());
s.setString(4, f.getFriend2Name());
s.addBatch();
}
long t1 = System.currentTimeMillis() - t0;
s.executeBatch();
long t2 = System.currentTimeMillis()-t0;
con.commit();
long t3 = System.currentTimeMillis()-t0;
s.close();
con.close();
long t4 = System.currentTimeMillis()-t0;
System.out.println(((double)t1/1000) + ";" + ((double)t2/1000) + ";" + ((double)t3/1000) + ";" + ((double)t4/1000));
and here is the console:
0.156;39.251;39.376;39.486
So the .executeBatch()
is taking like 40 secs, what could be the problem?
Add ?rewriteBatchedStatements=true
to the end of your JDBC url. It'll give you a serious performance improvement. Note that this is specific to MySql, won't have any effect with any other JDBC drivers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With