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



我刚刚创建了报告项目。

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

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

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

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

谢谢。

没有理由选择中间的DataTable。只是流数据从IQueryable直接到您的OpenXML库(即使用foreach上的Linq查询结果,并将每一行推入您的库,或手动编写)。

如果必须存储它,请使用合适的类。DataTable s在内部存储为object的数组列表,因此将所有值类型装箱(这会影响性能和内存使用)。

相关内容

最新更新