簡短問題:有沒有人有關於Linq的大容量數據的內存性能的任何信息?特別Linq到數據集或Linq到對象。Linq到大數據集的數據集/對象的內存性能
它可以處理的最大數量的記錄/對象是什麼?什麼是內存開銷?任何人都可以發佈一些棒球內存使用數據?
背景
我公司與外部數據庫的性能非常差(須因過度crapness仍然未命名)進行交互。它有一個適用於基本SELECTS的ODBC接口,但是有一些JOIN的性能會下降(對於任何試圖使用OUTER JOINS的人來說都是有害的)!
此前我們已經通過將SELECT * FROM Table語句複製到SQL數據庫並運行SQL查詢來解決此問題。但是,我們想從等式中刪除SQL服務器(刪除外部依賴關係)。
我想到的解決方案是將SELECT * FROM Table放入一些DataSets(或可能是自定義對象)中,並使用Linq在內存中執行所有查詢。
我們與之交互的數據大小限制爲2GB(並且我們不需要一次加載它,可能最多隻有幾百MB)。但是,我擔心看到大量數據的可怕OutOfMemoryException。因此我的問題。
ODBC驅動程序是32位的,所以我不能使用64位進程(不是沒有兩個進程之間的管道數據,我寧願保持複雜性至少)。 ODBC驅動程序是隻讀的。
有關這方面的其他意見或建議也很受歡迎(除了使用像SQL Compact這樣的嵌入式數據庫,如果在內存查詢中不可行,那是我們的計劃B)。 PS:我在接下來幾天做了一些概念驗證的基準測試(我知道我的情況只會在這些基準測試中有詳細說明),但我想看到有人已經有了這方面的經驗。
編輯:這將使用ClickOnce作爲Windows窗體應用程序進行部署。
它是WinForms,而不是網頁。這就是爲什麼我們要卸載SQL Server,以儘量減少安裝和維護佔用空間。 – ligos 2009-07-20 04:24:57
我想你已經在問題中得到了你的答案:)。在這種情況下,我的選擇可能會在同一行(Sql CE)。你仍然可以使用LINQ來反對那個組合的內部處理。我不認爲強迫LINQ替換真正的DB是一個不錯的選擇。 – 2009-07-20 04:46:47
我會把它放在船上。我只是試圖將一個查詢接口包裝在一個不好的數據源周圍,線性搜索會比我們所擁有的要好得多! – ligos 2009-07-20 05:14:29