.NET 6中使用IAsyncEnumerable流式读取MongoDB大结果集仍内存占用过高的问题咨询
.NET 6中使用IAsyncEnumerable流式读取MongoDB大结果集仍内存占用过高的问题咨询
大家好,我最近在开发一个API应用,本来寄希望于用IAsyncEnumerable来流式返回MongoDB的查询结果,以此避免应用内存被大量数据占满,但实际运行下来内存还是蹭蹭往上涨,想请教下各位大佬:是我的写法有问题,还是我对.NET 6里的IAsyncEnumerable流式能力期望过高了?
我的MongoDB数据读取代码是这样的,用来返回IAsyncEnumerable<Record>:
public async IAsyncEnumerable<Record> GetAllRecords() { var collection = GetCollection<Record>(); var cursor = await collection.FindAsync(FilterDefinition<Record>.Empty); while (await cursor.MoveNextAsync()) { foreach (var current in cursor.Current) yield return current; } }
之后我直接在Controller里返回这个IAsyncEnumerable对象,但当API向外发送所有记录的时候,应用的内存占用还是一路飙升,完全没有达到我预期的流式释放内存的效果。
备注:内容来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

