简短问题:有没有人有关于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