Я использую Spring Boot 2.x, Spring DATA REST, Hibernate для создания REST-сервера.Я создал импорт из CSV-файла из 100 тыс. Записей.К сожалению, я не могу достичь достойных ценностей.Импорт занимает примерно 150 секунд.
Идея моего кода состоит в том, чтобы разбить данные на более мелкие порции (лучший размер в моем тесте - 250) и создать и зафиксировать транзакцию для каждого порции.
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;
}
Каждый кусок создает запрос, подобный этому:
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`)
И это скриншот журналов Mysql, которые показывают, как выполняются эти запросы:
Я пытался изменить batch_size с другими значениями, но результат не сильно изменился.
Это детали того, где расходуется время:
Import completed in 155.93 seconds.
Query time 89.901 seconds.
Setting params time 22.199 seconds.
Я прочитал много других сообщений на эту тему, и люди утверждают, что могут вставлять также 100 тыс. Строк за 10-20 секунд.Я очень далек от этих значений!
У вас есть какой-нибудь совет, чтобы можно было выполнить импорт за 10-20 секунд?
ps: я использую Mysql5.7 в качестве дБ для свободного экземпляра RDS.