Как масштабировать многоядерные и параллельные вставки при использовании Oracle Database и Java 8? - PullRequest
0 голосов
/ 27 марта 2019

Мне нужно прочитать данные из файлов DBF и вставить их в среды Oracle Enterprise 12g / 13c, чтобы объединить и извлечь из них отчеты.Все работает правильно, но из-за тысяч файлов и их размеров от 0,5 до 1 ТБ на выполнение было потрачено несколько часов.

Средняя скорость составляет 7 000 записей в секунду.

IЯ использую RecursiveTask, чтобы открыть много соединений с базой данных, чтобы выполнить вставки параллельно.Oracle может использовать параллель во многих ситуациях, но не в этом случае.Я использую автоматическую фиксацию OFF, и таблица не имеет индекса.

Кроме того, я использую параллельный поток перед выполнением вставки в пакете, как показано ниже:

listInsert.parallelStream().forEach(line -> {
    try {
        statementDB.addBatch(line);
    } catch (SQLException e) {
        logger.error(line + "- ERRORCODE = " + e.getErrorCode() + " - " + e.getMessage());
    }
});
statementDB.executeBatch();
statementDB.getConnection().commit();

Проблема в том, что!Мне нужно быстрее импортировать все данные!

Любая помощь для повышения производительности для INSERT INTO или любого другого решения.Я думаю использовать Hive на Hadoop

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