我有一些 Oracle 程序可以生成/返回需要写入文件的大量数据。我目前正在尝试使用数据阅读器来完成。它似乎正在工作,我已经成功生成了一个 479mb 的文件,没有任何问题。从我检索 dataReader 到完成文件的时间不到 4 分钟。
但是我为特定过程获得的 dataReader 是crawling。它慢得令人难以置信。我修改了我的代码以尝试更好地了解正在发生的事情......
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 临时表。返回的 Ref Cursor 是一个 SELECT * FROM 该临时表。
我正在编写一个 PL/SQL 块,该块将打开该游标,以查看当我删除 .Net 代码时是否存在性能问题……希望这会有所帮助;但如果您有任何其他想法,将不胜感激。
再次感谢。这似乎是 PL/SQL 问题,而不是 .NET 问题。