Собственный запрос Hibernate INSERT из 100 тыс. Записей занимает слишком много времени - PullRequest
0 голосов
/ 11 сентября 2018

Я использую 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, которые показывают, как выполняются эти запросы:

enter image description here

Я пытался изменить 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...