邪恶的果冻甜甜圈
新成员
- 已加入
- 2016年10月13日
- 留言内容
- 1
- 编程经验
- 10+
我正在尝试使用ODP.NET或DevArt从Oracle 11G删除数百万条记录。如果我发送100条delete语句,则希望它们全部同时执行。但相反,它们以1乘1的顺序运行。
我尝试使用常规方式打开连接,执行语句,关闭连接,每个连接都有自己的线程。从理论上讲,我发送了200条语句,应该杀死服务器100%以上的CPU使用率。但是相反,我只看到8%的使用率,并且要花费数小时才能删除100万条记录。
因此,我以考虑让Oracle决定何时重用连接的问题为由禁用了缓冲池。相同的代码打开运行关闭。结果相同。我尝试了ODP和DevArt相同的结果。如果我打开多个SQLPlus窗口并运行多个语句,则可以按预期推送CPU。
我们直接在批量运行多个语句的服务器上进行了测试,并且能够推送CPU。因此服务器设置正确。回收站已禁用,无日志记录,无任何问题导致速度降低。所以问题是使用.NET连接时。
如果有帮助,我可以提交一些示例代码。
我尝试使用常规方式打开连接,执行语句,关闭连接,每个连接都有自己的线程。从理论上讲,我发送了200条语句,应该杀死服务器100%以上的CPU使用率。但是相反,我只看到8%的使用率,并且要花费数小时才能删除100万条记录。
因此,我以考虑让Oracle决定何时重用连接的问题为由禁用了缓冲池。相同的代码打开运行关闭。结果相同。我尝试了ODP和DevArt相同的结果。如果我打开多个SQLPlus窗口并运行多个语句,则可以按预期推送CPU。
我们直接在批量运行多个语句的服务器上进行了测试,并且能够推送CPU。因此服务器设置正确。回收站已禁用,无日志记录,无任何问题导致速度降低。所以问题是使用.NET连接时。
如果有帮助,我可以提交一些示例代码。