如何在Java中处理大型日志文件

时间:2018-08-20 12:35:34

标签: java

我有4个文件,每个文件200 MB。我创建了4个线程并并行运行4个线程,每个线程都进行处理并添加到Array阻塞队列中。

其他一些线程正在处理Array Blocking Queue并进行处理并批量添加。批处理大小为5000,正在执行批处理并将记录插入到数据库中。但是,它需要完整的4个文件才能完成大约6分钟的时间。

在这种情况下如何提高性能?

1 个答案:

答案 0 :(得分:1)

1)确保您有足够的内存用于队列+处理器缓冲区+数据库缓冲区。

2)5k的批处理大小比所需的要大一些,通常您可以提高到100k,但这并不是在这里有很大的不同。

3)您可以在多个线程中将数据推入oracle。如果前面没有ID字段填充序列,则可以并行插入1个表中。否则,请考虑禁用/重新计算索引,或将其插入临时表,然后将所有内容移至主表。

4)与其他DB管理员一起查看oracle设置。扩展大小/增加之类的事情可能会改变性能。