【问题标题】:How much Application session data can you actually hold?您实际上可以持有多少应用程序会话数据?
【发布时间】:2010-09-14 02:59:37
【问题描述】:

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

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

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

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

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

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

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

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

【问题讨论】:

  • 请澄清您的第一次编辑。您在第二次编辑中是正确的,但我仍然不清楚第一次。在“宇宙”的 200K 行中,每个访问者的 20 行是不同的还是相同的?

标签: asp.net caching application-cache


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 已更新和编辑。请查看更改。这 20 行不会保持静态,并且可以/每几分钟/几小时更改一次。
        猜你喜欢
        • 2010-09-09
        • 2018-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多