我有一些Oracle过程可以生成/返回大量数据,我需要将这些数据写到一个文件中。我目前正试图用一个数据阅读器来完成。它似乎在工作,我已经成功地生成了479MB文件,没有任何问题。从我检索到数据阅读器完成文件不到4分钟。
但我得到的一个特定过程的数据阅读器是
爬行
. 真是太慢了。我修改了我的代码,试图更好地了解正在发生的事情……
System.Diagnostics.Debug.Write("Performing .Read() on DataReader: ")
Dim d1 As DateTime = DateTime.Now
Dim result As Boolean = myDataReader.Read()
Dim ts As TimeSpan = DateTime.Now.Subtract(d1)
System.Diagnostics.Debug.WriteLine(ts.ToString)
有趣的是,我的输出结果是这样的:
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:00:00
Performing .Read() on DataReader: 00:07:33.5037500
我真的不知道下一步该怎么做。我看不到07:33.5037500的那一行有任何独特或不同之处。有什么建议吗?
编辑:
谢谢大家的回答。首先,据我所知,没有异常被抛出。正如建议的那样,我已经看了一看这个特殊的过程,它展示了上面的行为,虽然过程非常庞大;但是看起来它使用了大量的游标来填充Oracle临时表。返回的引用光标是该临时表中的select*。
我正在编写一个pl/sql块,它将打开该光标,以查看删除.NET代码时是否存在性能问题……希望这会有所帮助;但如果您有其他想法,我们将非常感激。
再次感谢。这似乎是一个PL/SQL问题,而不是.NET问题。