0

我尝试了很多解决方案,但我仍然不明白:我有一个简单的插入(有 40 个不同类型的列(包括 blob),我尝试插入这种数据传递(我使用来自 c# 的 Odac)值数组对于每个参数。

结果是一次或多或少地调用 ExecuteNonQuery 4000 行,问题是这个插入没有那么多元素持续 3 小时。

有什么建议吗?数据源来自软件,因此无法在 db 上链接,它的内存数据和我所做的只是将它们放入数组中并将它们作为我的 oraclecommand 的输入参数传递,然后我运行。

在这种情况下,使用存储过程会有什么不同吗?为什么?

插入实际上是在一个事务中,但我尝试插入的表中根本没有索引,数据库它是一个带有 100 个表的 Oracle XE 的常规安装,事务只包括这个插入和其他一些不太大的操作。我尝试插入的总数据最大为 100 Mb...我不知道我应该再次检查什么:(

再说一遍:事务似乎不会影响性能并且速度不是线性的,即 1000 个元素 = 10 分钟,4000 个元素 = 3 小时 .. 全部使用 100% 的 cpu 和大量的内存使用

4

1 回答 1

1

插入 4,000 行需要 3 个小时?那是问题吗?除非每一行都是几 GB 长,否则没有真正的理由来实现这种性能 - 您需要查看数据库(或让您的 DBA 执行),而不是您的 C# 代码。

于 2012-03-16T15:24:24.213 回答