平面文件中的Viewstate与SQLserver中的viewstate相比

时间:2009-10-10 23:47:16

标签: asp.net sql-server viewstate flat-file

我根据PageStatePersister编写了自己的SessionPageStatePersister类,它将会话的最新10 Viewstate写入共享磁盘。我认为这会比在会话中保持Viewstate更好地扩展,因为所有Web服务器都可以访问它,它们不必处理过期,并且使用更少的内存。

当用户关闭浏览器时,它会通知服务器,服务器会删除那些两小时内未访问过的文件。到目前为止这么好,但我想知道将Viewstate存储在SQL服务器数据库中是否会更快更高效。

  1. 每个ViewState文件平均为30k。
  2. 目前它只是读取一个隐藏字段以获取Viewstate键并直接访问该文件并反序列化。无需排序或搜索。
  3. 每小时将有大约2000个并发用户,并且保存最近的20个Viewstate会话将是每小时大约20k个临时视图文件。
  4. 必须定期迭代文件并删除最旧的文件。
  5. 在这种情况下哪个更好: flatfile 系统或数据库

1 个答案:

答案 0 :(得分:3)

在SQL Server中存储ViewState会扩展得更好。例如,如果您最终想要从最近的10个增加到最近的50个,那么DB负载的增加将是相对微不足道的。通常应尽可能避免磁盘I / O,而不是DB I / O.清理操作也会更好,因为在磁盘上放弃废弃文件可能比WHERE DateInserted > 20 minutes ago重得多。