I'm using Spring Boot 2.x, Spring DATA REST, Hibernate to create a REST server.
I created a import from a csv file of 100k records. Unfortunately I'm not able to reach decent values.
The import takes 150 seconds more or less.
The idea behind my code is to split data into smaller chunks (the best size in my test was 250) and create and commit a transaction for every chunk.
public int bulkInsert(Collection<OphthalmicLens> lenses) {
StopWatch stopWatch = new StopWatch();
StopWatch stopWatchQuery = new StopWatch();
StopWatch stopWatchParameters = new StopWatch();
stopWatch.start();
int totalRecordsUpdated = 0;
try {
String insert = "INSERT INTO OphthalmicLens (`createdBy`,`createdDate`,`lastModifiedBy`,`lastModifiedDate`,`sid`,`version`,`manufacturer`,`manufacturerCode`,`name`,`sku`,`upc`,`cylinder`,`design`,`diameter`,`index`,`material`,`source`,`sphere`,`type`) VALUES ";
String[] values = { "" };
String onDuplicate = " ON DUPLICATE KEY UPDATE lastModifiedBy=VALUES(`lastModifiedBy`),lastModifiedDate=VALUES(`lastModifiedDate`)";
// Query query = entityManager.createNativeQuery(insert);
String createdBy = springSecurityAuditorAware.getCurrentAuditor().get();
int i = 0;
int chunkSize = 250;
Map<String, Object> params = new HashMap<String, Object>(chunkSize);
int chunkPage = 0;
if (lenses.size() < chunkSize) {
chunkSize = lenses.size();
}
for (i = 0; i < chunkSize; i++) {
if (i > 0)
values[0] += ",";
values[0] += "(:createdBy" + i + ",NOW(),:lastModifiedBy" + i + ",NOW(),UUID()" + ",:version" + i + ",:manufacturer" + i
+ ",:manufacturerCode" + i + ",:name" + i + ",:sku" + i + ",:upc" + i + ",:cylinder" + i + ",:design" + i
+ ",:diameter" + i + ",:index" + i + ",:material" + i + ",:source" + i + ",:sphere" + i + ",:type" + i + ")";
}
i = 0;
int totalIndex = 0;
for (OphthalmicLens lens : lenses) {
params.put("createdBy" + i, createdBy);
params.put("lastModifiedBy" + i, createdBy);
params.put("version" + i, 1);
params.put("manufacturer" + i, lens.getManufacturer());
params.put("manufacturerCode" + i, lens.getManufacturerCode());
params.put("name" + i, lens.getName());
params.put("sku" + i, lens.getSku());
params.put("upc" + i, lens.getUpc());
params.put("cylinder" + i, lens.getCylinder());
params.put("design" + i, lens.getDesign().toString());
params.put("diameter" + i, lens.getDiameter());
params.put("index" + i, lens.getIndex());
params.put("material" + i, lens.getMaterial().toString());
params.put("source" + i, lens.getSource().toString());
params.put("sphere" + i, lens.getSphere());
params.put("type" + i, lens.getType().toString());
/**
* For every chunk I do a commit, flush and I clean entity manager
*/
if (i >= (chunkSize - 1) && i % (chunkSize - 1) == 0) {
transactionTemplate.execute(new TransactionCallback<Void>() {
#Override
public Void doInTransaction(TransactionStatus status) {
try {
Query query = entityManager.createNativeQuery(insert + values[0] + onDuplicate);
stopWatchParameters.start();
for (String key : params.keySet()) {
query.setParameter(key, params.get(key));
}
stopWatchParameters.stop();
stopWatchQuery.start();
query.executeUpdate();
entityManager.flush();
entityManager.clear();
stopWatchQuery.stop();
} catch (Exception e) {
log.error("", e);
status.setRollbackOnly();
}
return null;
}
});
params.clear();
// log.info("Query for chunk {} executed.", totalIndex / (chunkSize - 1));
}
i++;
totalIndex++;
// reset index when I change chunk page
if (chunkPage != (i / chunkSize)) {
chunkPage = i / chunkSize;
i = 0;
}
}
} finally {
stopWatch.stop();
log.info("Import completed in {} seconds.", stopWatch.getTotalTimeSeconds());
log.info("Query time {} seconds.", stopWatchQuery.getTotalTimeSeconds());
log.info("Setting params time {} seconds.", stopWatchParameters.getTotalTimeSeconds());
}
log.info("Total records updated: {}", totalRecordsUpdated);
return totalRecordsUpdated;
}
Every chunk create a query like this:
INSERT INTO OphthalmicLens (`createdBy`,`createdDate`,`lastModifiedBy`,`lastModifiedDate`,`sid`,`version`,`manufacturer`,`manufacturerCode`,`name`,`sku`,`upc`,`cylinder`,`design`,`diameter`,`index`,`material`,`source`,`sphere`,`type`) VALUES (?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?),(?,NOW(),?,NOW(),UUID(),?,?,?,?,?,?,?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE lastModifiedBy=VALUES(`lastModifiedBy`),lastModifiedDate=VALUES(`lastModifiedDate`)
And this is a screenshot of Mysql logs that show how that queries are executed:
I tried to change batch_size with different values but result doesn't change so much.
This is the detail of where the time is consumed:
Import completed in 155.93 seconds.
Query time 89.901 seconds.
Setting params time 22.199 seconds.
I read many other posts about the topic and people claim to be able to insert also 100k rows in 10-20 seconds. I'm really far away from those values!
Do you have some advice to be able to accomplish the import in 10-20 seconds?
p.s: I'm using Mysql 5.7 as db on a RDS free micro instance.