我尝试了很多解决方案,但我仍然不明白:我有一个简单的插入(有40列不同类型(包括blob),我尝试插入这种数据传递(我使用来自c#的Odac)每个参数的值数组。
结果是或多或少地对4000个ExerowsNonQuery进行了单次调用,问题是这个插入过去3小时没有那么多元素。
有什么建议吗?数据源来自软件,因此不能在db上链接,它的内存数据和我所做的只是将它们放在数组中并将它们作为我运行的oraclecommand的输入参数传递。
在这种情况下,使用storedprocedure会有什么不同吗?为什么呢?
插入实际上是在一个事务中,但我尝试插入的表中根本没有索引,db是一个常规安装的Oracle XE,有100个表,事务只包含这个插入和其他一些不那么大的动作。 我尝试插入的总数据最大为100 Mb ......我不知道应该再次检查一下:(
再次说明:交易似乎没有影响性能,速度也不是线性的,即1000elements = 10minutes,4000element = 3hours ..所有cpu 100%和大量使用内存
答案 0 :(得分:1)
插入4,000行需要3个小时?那是问题吗?除非每行长度为几GB,否则没有真正的借口可以实现这样的性能 - 您需要查看数据库(或让DBA执行此操作),而不是您的C#代码。