通过OJDBC对Oracle数据库进行大量插入的性能

时间:2012-11-23 11:25:37

标签: java performance oracle ojdbc

我有一个Java程序,用于在Oracle数据库中插入大量(750.000)记录。我正在使用OJDBC6库和OCI客户端。要写入的表包含330列,其中8列出现在一个或多个索引中。

在尝试了两种方法之后,我仍然在努力解决一些性能问题。

  1. 创建一个预准备语句,填写每条记录的参数,然后执行该语句需要1h29。
  2. 创建一个预准备语句,填写每条记录的参数,将它们添加到批处理中并每500/1000/5000执行批处理(我尝试了几个选项)处理的记录需要0h27。
  3. 但是,当使用像Informatica PowerCenter这样的ETL工具将相同的数据映射到相同的表时,它只需要几分钟。我知道达到这个时间可能是一厢情愿的想法,但我怀疑是否无法获得任何表现。

    有没有人知道这个行动的合理时机,以及如何实现这些行动?感谢任何帮助,非常感谢提前!

    (一个相关的问题:我也必须更新很多记录。最有效的方法是:跟踪已更改的列并创建仅包含这些列的依赖于记录的预准备语句;或者总是更新所有列,从而重用相同的预处理语句?)

2 个答案:

答案 0 :(得分:0)

要尝试的另一件事是删除索引,插入数据,然后重新加载索引。 Java不是那么容易,但足够简单。

答案 1 :(得分:0)