如何使用Oracle数据库和Java 8扩展多核和并行插入?

时间:2019-03-26 23:21:59

标签: jdbc parallel-processing

我需要从DBF文件中读取数据并将其插入到Oracle Enterprise 12g / 13c环境中,以进行联接和从中提取报告。 一切工作正常,但是由于有成千上万个文件且文件大小在0.5到1TB之间,因此执行已花费了数小时才能完成。

平均速度为每秒7.000条记录。

我正在使用RecursiveTask打开许多与数据库的连接以并行执行插入。 Oracle在许多情况下都可以使用并行,但在这种情况下不能使用。 我正在使用自动提交OFF,并且该表没有索引。

此外,在批量执行插入之前,我正在使用parallelStream,如下所示:

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或任何其他解决方案的性能的帮助。我正在考虑在Hadoop上使用Hive

0 个答案:

没有答案