Edu*_*uro 5 .net c# oracle bulk
我的C#.NET应用程序使用OracleBulkCopy将数百万条记录写入临时表.每次应用程序在内存中有20000条或更多条记录时,它会调用OracleBulkCopy在一个批处理中写入所有这些记录(我使用批处理大小= 0).在开始时表是空的,只需2秒即可编写整批.在此过程中,编写批处理的时间会增加.在2.000.000记录之后,每个呼叫花费将近25秒.我使用的是OracleBulkCopy的默认选项.当表达到40.000.000时进行一些测试,写入20.000条记录需要将近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';
Run Code Online (Sandbox Code Playgroud)
百分之九十九的情况下,跟踪结果都会指出这些奇怪的速度变慢情况下的问题。