具有巨大数据表的ASP.NET使用非常高的内存

时间:2015-10-22 05:17:55

标签: asp.net iis memory-management

我只是创建报告项目。

但是我发现当我导出具有许多复杂且非常高的记录(1-10M记录)的报告时,我的服务器内存负载非常高(16GB +)。

我的流程。 1.使用linq to sql查询数据库并将它们存储在datatable中。 2.然后使用openxml将数据表导出到excel。

我一直在研究一下,找到了切片数据表并导出到excel中的几个工作表的解决方案。

但我认为这不是我的真正目标。 我的问题是如何解决数据表高内存问题?

谢谢。

1 个答案:

答案 0 :(得分:0)

没有理由去找DataTable。只需将IQueryable中的数据直接传输到OpenXML库中(即在Linq查询结果上使用foreach并将每行推入库中,或手动编写)。

如果您必须存储它,请使用适当的类。 DataTable在内部存储为object的数组列表,从而装箱所有值类型(影响性能和内存使用)。