好的,所以我在 ASP.NET 项目上工作了一段时间,似乎我做出了一些糟糕的设计选择,随着项目在包含的数据方面变得越来越大,这些选择又回来困扰着我。
在阅读了 .NET 内存管理之后,我想我已经确定了一整套潜在的原因。由于我正在做的事情并不是特别特别,我想知道是否有一个标准模式来实现我想要做的事情,而我却错过了。
所以我有一个(有点昂贵的查询),它产生的结果在 1 到 20000 之间。在后续请求中,我们可能只是对结果集进行分页,所以我将此结果存储在会话中。会话是 InProc。我在想:
a) 将结果 b) 存储在会话 c) 进程中是否有意义?我想要(a)的速度。我不知道是否有比由用户(b)存储它更有效的方法,如果我使用更复杂的状态服务器 - 它不是更慢(c)吗?或者这可能是解决方案,更快地处理这些大对象,而不是将最后一个结果集保存在 RAM 中直到会话到期?
如果任何结果集 > ~ 20000 行最终可能会弄乱 LOH,是否有通用的方法来解决这个问题?
我知道这个问题的说明有些不足。我刚刚意识到我的整体设计可能有缺陷(wrt 可扩展性),我只是想估计到底有多大缺陷。我希望可以收集一些关于标准模式的提示,将其变成一个普遍有用的问题。