在我們的應用程序中,我們使用Windows服務生成報告。報告數據從SQL Server使用存儲過程獲取。在某些情況下,返回的結果集包含250,000條記錄(我們無法幫助完成此部分,因爲我們需要對此進行一些計算)。C#OutOfMemory處理大數據時的問題
問題
我們的應用程序在獲得讀者這個數據,我們正在我們的自定義對象的自定義集合在轉換數據集。由於數據量巨大,因此無法將完整的數據存儲在自定義對象中,因此無法存儲內存。當我們在執行記錄時看到進程使用情況的任務管理器時,它非常高,甚至CPU利用率也很高。
我不確定在這種情況下應該做什麼。
- 我們可以增加分配給CLR下運行一個進程內存的大小?
- 其他解決方法?
任何幫助將非常感激
- 爲什麼我需要一次所有的數據:我們需要做完整的結果集計算
- 我們使用ADO.NET和轉化將數據設置到我們的自定義對象中(集合)
- 我們的系統是32位
- 我們無法頁面數據
- 不能計算移動到SQL Server
此堆棧跟蹤可能會幫助:類型的System.OutOfMemoryException'的
異常被拋出。服務器 堆棧跟蹤:在 System.Collections.Generic.Dictionary
2.ValueCollection.System.Collections.Generic.IEnumerable<TValue>.GetEnumerator() at System.Linq.Enumerable.WhereEnumerableIterator
1.MoveNext()在 System.Collections.Generic.List1.InsertRange(Int32 index, IEnumerable
1集)在 System.Collections.Generic.List1.AddRange(IEnumerable
1集) 在MyProject的。 Common.Data.DataProperty.GetPropertiesForType(Type t)in C:\ Ashish-Stuff \ Projects \ HCPA \ Dev Branch \ Common \ Benefits.Common \ Data \ DataProperty.shared.cs:line 60 at MyProject.Common。 Data.Extensions.GetProperties [T](T target)in C:\ Ashish-Stuff \ Projects \ HCPA \ Dev Branch \ Common \ Benefits.Common \ Data \ Extensions.shared.cs:line 30 at MyProject.Common .Data.Factories。SqlServerDataFactoryContract1.GetData(String procedureName, IDictionary
2個參數,可爲空1 languageId, Nullable
1 PAGENUMBER,Nullable`1的pageSize)
感謝, 阿希什
你需要_all_行嗎? – 2012-07-23 15:05:33
您應該調查您是否可以執行SQL中的部分或全部計算。例如,您可能能夠將結果總結爲少於250萬行,然後繼續在C#中處理。 – 2012-07-23 15:05:35
我們需要更多信息。例如操作系統是32位或64位操作系統。 250萬條記錄不算什麼,有些系統處理數十億條記錄,他們只是把它們放在切片中然後合併它們。至於我低估這個問題的原因,你需要提供代碼並告訴我們你目前是如何處理這個問題的,所以我們可以解決你的下劃線問題。 – 2012-07-23 15:06:31