6

我目前有一个应用程序,每天有超过 20,000 名用户使用,他们主要查看一个数据表。该数据表填充了大约 20 行,但从数据库中的“数据表”中提取,表中有 200,000-600,000 条信息记录。编辑:这 20 行是“动态的”,如果用户通过文本框输入任何信息,它们会发生变化。

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

我目前每次显示数据表时都会进行大约 4 次回调,但我无法将其减少到 1 次。

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

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

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

编辑:用户确实看到了一组独特的 20 行,这可能与用户看到的任何其他 20 行不同。这是一个非常动态的网站,几行不同的行可以大约每秒更新一次。

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

4

4 回答 4

2

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

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

  2. 你打算如何在这么多行中搜索一些东西?数据库服务器在幕后为您处理大量搜索和排序。如果您在网络服务器上缓存数据,他们使用的一些非常复杂的算法将会丢失。

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

于 2008-09-30T12:14:14.253 回答
0

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

于 2008-09-29T21:24:51.333 回答
0

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

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

检查这个:Configuring ASP.NET Applications in Worker Process Isolation Mode (IIS 6.0)

于 2008-09-29T21:35:36.127 回答
0

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

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

于 2008-09-29T21:51:36.713 回答