2

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

当用户关闭浏览器时,它会通知服务器,服务器会删除两个小时未访问的文件。到目前为止一切都很好,但我想知道将其存储Viewstate在 SQL 服务器数据库中是否会更快、更有效。

  1. 每个ViewState文件平均为 30k。 
  2. 目前它只是读取一个隐藏字段来获取 Viewstate 键并直接访问文件并反序列化。无需排序或搜索。
  3. 每小时将有大约 2000 个并发用户,保存最近的 20 个 Viewstate 会话将是每小时大约 20k 个临时视图文件。
  4. 它必须定期遍历文件并删除最旧的文件。

那么在这种情况下哪个更好:平面文件系统还是数据库

4

1 回答 1

3

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

于 2009-10-11T19:29:14.407 回答