首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于在ASP.NET中存储和访问对象/集合的指南

关于在ASP.NET中存储和访问对象/集合的指南
EN

Stack Overflow用户
提问于 2012-02-16 21:56:36
回答 2查看 369关注 0票数 1

我目前正在使用ASP.NET数据库(使用EntitySpaces ORM)开发一个EntitySpaces报告应用程序(C#)。性能/响应能力是这个应用程序成功的关键,因为它将在几天内被1000多人使用。我非常希望避免往返于数据库,因为我知道这将是一个瓶颈。我的第一个想法(因为数据库的物理大小相对较小)是简单地缓存应用程序缓存中的所有数据库对象,并根据需要从缓存中查询它们。当ASP.NET开始从缓存中删除项时,我很快意识到了逻辑中的缺陷--大概是因为使用了太多的内存。

还有别的/更好的方法吗?在应用程序启动时,还有另一种存储静态收集的方法吗?我可以保证垃圾收集不会消耗它?我很清楚页面级缓存,但这不会有多大帮助,因为我实际上正在构建一系列针对每个用户的特殊报告。

编辑:只是为了进一步澄清一下,所有正在缓存的数据的大小都是<5MB。其想法是缓存所有对象,然后使用linq过滤集合。

EN

回答 2

Stack Overflow用户

发布于 2012-02-17 04:15:15

我相信你已经知道,索引是个好主意。在此之后,服务器的硬件将极大地影响数据库提供数据->的能力,如果您确实需要一些严重的性能,则切换到RAIDed SSD,每晚备份到常规HDs。

除此之外,表的设计会影响其速度。由于您注意到数据库相当小(这需要限定,因为Oracle通常用于更大的东西),所以可能没有什么可做的了。

如果您确实需要速度,您可能想要使用多主NIC,并直接连接到请求数据的服务器。

对于RDBMS来说,将数据保存在内存中并不是一个好主意,因为它倾向于将数据提交到磁盘而不是性能。如果您不介意数据可能丢失的想法(不做任何真正重要的事情/需要备份),那么您可以使用一个只有内存的数据库。而且,您构建的任何数据库机器都应该被打包到带有处理器和内存的gills中(不需要压缩)。

通常情况下,使用更严格的/更多的手动编码和奇异的硬件可以获得更高的性能,但问题是,它值得付出代价吗?获得额外10%性能所需的资源类似于保时捷活塞相对于大众活塞->的额外精度所需的资源--这将花费10倍的成本,超过先前的数量来获得该性能。我认识的人中,只有那些有钱,需要这样的表现的人,要么为国家政府的密码部门工作,要么为高频贸易公司工作。

票数 0
EN

Stack Overflow用户

发布于 2012-02-17 04:15:50

根据需要存储的数据的大小,可以将其存储在应用程序状态中:

如何:在应用程序状态http://msdn.microsoft.com/en-us/library/94xkskdf.aspx中保存值

如何:从应用程序状态http://msdn.microsoft.com/en-us/library/y8hhek39.aspx读取值

最后,可以在应用程序的Application_Start文件中的global.asax方法中设置变量:http://www.techrepublic.com/article/working-with-the-aspnet-globalasax-file/5771721

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9319689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档