Расчет оптимального размера Executors.newFixedThreadPool(?) в зависимости от характеристик сервера

есть метод для записи данных в БД Postgres

private void saveJdbcBatchCallable(final List<Data> datas) {
        final ExecutorService executorService = Executors.newFixedThreadPool(???);
        final List<Callable<Void>> callables = subdepoOperationsList.stream().map(sublist ->
                (Callable<Void>) () -> {
                    save(datas);
                    return null;
                }).collect(Collectors.toList());
        try {
            executorService.invokeAll(callables);
        } catch (InterruptedException e) {
            log.error("Error during prepare data: {}", e.getMessage());
            Thread.currentThread().interrupt();
        }
    }

записывается порядка 20 млн строк. я поставил Executors.newFixedThreadPool(100) и результат - около 30 минут. можно ли расчитывать оптимальный размер пула в зависимости от параметров сервера, где работает микросервис? и от размера кучи с которым сервис запущен.


Ответы (0 шт):