我有幾個Oracle過程生成/返回大量需要寫入文件的數據。我目前正在試圖用數據讀取器來完成。它似乎工作,我已經成功地生成了一個479mb文件沒有任何問題。從我檢索dataReader來完成文件的時間不到4分鐘。使用.Net中的Oracle DataReader產生的巨大性能問題
但是我得到一個特定過程的dataReader是爬行。這是令人難以置信的緩慢。我修改了代碼,試圖讓正在發生的事情的一個更好的主意....
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問題。
沒有足夠的信息來回答atm ...除了是拋出異常,這是默默處理? – 2010-11-10 04:21:05
你可能應該發佈更多完整的代碼... – 2010-11-10 04:23:51