【发布时间】:2016-08-05 16:03:56
【问题描述】:
各位开发者您好,
我正在尝试使用 Linq 查询改进以 BLOB 格式存储在 Oracle 数据库中的 XML 对象列表的导出。
遗憾的是,其中一个 BLOB 非常大,当我阅读它时,内存使用量增加到 2 GB。我的 fileSet 对象是一个 IQueryable<myRecord> 对象。
我试过了
foreach (var file in fileSet){...}
和
var files = fileSet.ToList(); //This time the list is causing the memory load.
foreach(file in files){...}
和
var e = fileSet.AsEnumerable().GetEnumerator();
while(e.MoveNext()){...}
但每次我达到列表中的大记录时,内存都会被过度使用。
为了创建导出,我一直在寻找一些使用 Buffer.BlockCopy 的代码,但由于内存过度充电,如果您知道如何减少内存使用或延迟加载每个 blob,那么在这个方向上没有任何意义: (
【问题讨论】:
-
您是否需要在处理过程中加载一个 blob,或者它只是因为 fileSet 的记录定义有这个 blob 字段而发生?
-
@SergeyL 我需要blob,这个软件正在加载这些blob并将它们导出到xls文件中,里面基本上是xml。