OracleBulkCopy性能

时间:2011-07-01 19:25:13

标签: c# .net oracle bulk

我的C#.NET应用程序使用OracleBulkCopy将数百万条记录写入临时表。每次应用程序在内存中有20000条或更多条记录时,它会调用OracleBulkCopy在一个批处理中写入所有这些记录(我使用批处理大小= 0)。在开始时,表是空的,只需2秒即可编写整批。在此过程中,编写批处理的时间会增加。在2.000.000记录之后,每个呼叫花费将近25秒。我使用的是OracleBulkCopy的默认选项。当表达到40.000.000时进行一些测试,写入20.000条记录需要将近3分钟。

我想知道是否有任何建议(我找不到任何相关内容),以便为每次通话保持几乎恒定的时间。我做错了吗?

1 个答案:

答案 0 :(得分:3)

好像很奇怪的行为。您是否跟踪了插入数据库会话以查看它正在等待什么?

ALTER SESSION SET timed_statistics=TRUE;
ALTER SESSION SET max_dump_file_size=UNLIMITED;
ALTER SESSION SET EVENTS '10046 trace name context forever, level 8';

100次中的99次,跟踪结果将指出您在这些奇怪的减速情况下的问题。