2008-09-29 101 views
6

我目前有一个应用程序每天受到20,000用户的打击,他们主要查看一个数据表。这个数据表充满大约20行,但是从db中的“datatable”中取出,表中有200,000-600,000条记录信息。 编辑:这20行是“动态”,如果用户通过文本框输入任何信息,就会改变。您可以保存多少应用程序会话数据?

我目前也持有用户数据以及配置文件数据。

每次显示数据表时,我目前都会进行4次回调,而我无法将其调回1次。

问题:我想知道如果我能真正填补了应用程序的状态,每5秒的200,000-600,000行数据,它实际上会加快系统? 编辑:做用户或任何其他用户输入的动态行,内容需要经常刷新。

问题2:我可以在应用程序缓存中实际占用多少内存,并且仍然可以避免使用它。

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

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

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

+0

请说明您的第一次编辑。你在第二次编辑中是正确的,但我仍然不清楚第一次编辑。在“宇宙”中的20万行中,每个访问者的20行不同,还是相同? – 2008-09-29 22:26:56

回答

2

从技术上讲,我相信你想要做的是可能的,但我不会推荐它。沿着这条道路前,你需要考虑几个因素。

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

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

有没有真正的硬的快速规则,以当事情是在内存而不是在数据库中更快。这实际上取决于应用程序的设置方式以及数据存储方式。

0

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

0

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

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

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

0

你能澄清我 - 你说用户得到的20条记录的DataTable这是唯一的用户,并查询600K表的结果呢?是记录静态用户?

如果只有20条是保持静态,一旦它们与用户关联,您可以创建流对请求的用户序列化对象?也就是说,把他们放在一个他们准备好去的地方,这样你就不用打数据库了。

+0

已更新和编辑。请查看更改。 20行不保持静态,并且可能会每隔几分钟/小时更改一次。 – 2008-09-29 23:32:28

相关问题