3

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

在尝试了两种方法之后,我仍然在为一些性能问题而苦苦挣扎。

  1. 一次创建一个准备好的语句,为每条记录填充参数,然后执行该语句需要 1h29。
  2. 一次创建准备好的语句,填充每条记录的参数,将它们添加到批处理中并每 500/1000/5000(我尝试了几个选项)执行批处理记录需要 0h27。

但是,当使用 Informatica PowerCenter 等 ETL 工具将相同的数据映射到相同的表时,只需几分钟。我知道达到这个时间可能是一厢情愿,但我怀疑是否无法获得任何性能。

有没有人知道这个行动的合理时间安排,以及如何实现?任何帮助表示赞赏,非常感谢提前!

(一个相关问题:我也将不得不更新很多记录。最有效的方法是什么:跟踪已更改的列并创建仅包含这些列的依赖于记录的准备语句;或始终更新所有列,从而重用相同的准备好的语句?)

4

2 回答 2

0

您可以在 Java http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ThreadGroup.html上使用 ThreadGroup

;)

于 2012-12-11T12:55:59.263 回答
0

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

于 2012-11-24T04:17:15.390 回答