从多线程中的DB提取到txt文件

时间:2014-12-02 15:20:56

标签: java multithreading oracle jdbc

我需要提高提取巨大数据库表的性能 该表已分区。

现在我通过jdbc连接解压缩并写入迭代ResultSet的文本文件。

我现在计划在它的线程中创建多个连接,每个连接将为每个分区运行select查询:

SELECT * FROM TABLE  partition (PR001_P1)
SELECT * FROM TABLE  partition (PR002_P2)
SELECT * FROM TABLE  partition (PR003_P3)

每个线程都会写入一个线程安全的缓冲区,另一个线程会从这个缓冲区中读取并写入文件(顺序并不重要)

它会改善表现吗? (我知道我需要测试,但也许你可以建议)

1 个答案:

答案 0 :(得分:0)

可能 可以提高效果,但您只能通过测试来判断它是否有效。

您打算在写入输出文件时等待IO所花费的时间少于通过并行执行请求获得的时间。对我来说似乎是一个相当安全的赌注。

您的流程的内存占用量可能比单线程方法更大。值得关注的是,如果你达到内存受限的程度,你会发现这会影响你的表现。

相关问题