我目前有一个应用程序,每天有超过20,000个用户受到攻击,他们主要看一个数据表。该数据表填充有大约20行但是从“数据表”中拉出。在表中包含200,000-600,000条信息记录的数据库中。 修改:这20行是“动态”的。如果用户通过文本框输入任何信息,则会进行更改。

我目前还持有用户数据和个人资料数据。

每次显示数据表时,我目前正在进行大约4次回拨,而我无法将其调低至1次。

问题我想知道我是否真的可以每隔5秒用200,000-600,000行数据填充应用程序状态,它是否真的可以加快系统速度? 修改:对用户或任何其他用户输入的动态行执行操作,内容需要经常刷新。

问题2:我可以在应用程序缓存中实际保留多少,并且仍可以更快地使用它?

编辑:有超过20,000名用户访问这些200,000行,我需要缓存所有这些行,或者至少我认为是最佳做法。当用户访问我的网站时,这是他们查看的主要页面之一,每次访问可能会回到2-5次。

编辑:用户确实会看到一组20行,可能与用户看到的任何其他20行不同。这是一个非常动态的网站,可以在一秒钟左右更新几行不同的行。

编辑:如果存储在会话状态,那么它只会加快用户查看网页的次数。不是全部应用程序,因为一个人只能查看一次页面然后离开。

有帮助吗?

解决方案

从技术上讲,我相信你想做的事情是可能的,但我不会推荐它。在走这条路之前,你必须考虑几个因素。

  1. 你有硬件支持吗?如果你没有这种配置的内存并且你必须进行页面交换,那么你可能会失去将其缓存在内存中的大部分速度优势。如果您使用的是进程外状态服务器,那么系统会有处理序列化的开销。

  2. 您打算如何在多行中搜索某些内容?数据库服务器在后台处理很多搜索和排序。他们使用了一些非常复杂的算法,如果您将数据缓存在Web服务器上,您将失去这些算法。

  3. 当数据库中的某些东西比内存中的内容更快时,没有真正的快速规则。这实际上取决于应用程序的设置方式以及数据的存储方式。

其他提示

你说他们大多看一张桌子,那张桌子从200到600K。这张桌子经常拉?这是一个“主页”吗?用户主要查看数据第一页的类型场景?为什么不缓存所有200K行,为什么不缓存前20行?

您确定要将其存储在会话状态吗?如果他们使用相同的数据库,我更喜欢应用程序状态,这样只会将一个数据集存储在内存中。

我认为内存限制是由IIS控制的。 最大虚拟内存最大使用内存限制。 不要忘记检查数据的可用性。

检查:在工作进程隔离模式(IIS 6.0)中配置ASP.NET应用程序

您能否为我澄清一下 - 您是说用户获取的20条记录的数据表对于该用户来说是唯一的,并且是查询600K表的结果?记录是否为用户静态?

如果只有20条记录在与用户关联后仍保持静态,您是否可以创建可根据请求流式传输给用户的序列化对象?也就是说,将它们置于准备好的状态,这样您就不必点击数据库了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top