asp.net - 平面文件中的 View 状态与 SQLserver 中的 View 状态

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

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

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

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

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

最佳答案

将 ViewState 存储在 SQL Server 中会更好地扩展。例如,如果您最终希望从最近 10 个增加到最近 50 个,则数据库负载的增加相对较小。通常应尽可能避免磁盘 I/O,而不是 DB I/O。清理操作也会工作得更好,因为在磁盘上废弃文件的荒地中寻找可能比 WHERE DateInserted > 20 分钟前 繁重得多。

关于asp.net - 平面文件中的 View 状态与 SQLserver 中的 View 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1549403/

相关文章:

javascript - 为什么我的 asp 文件上传控件文本框是可点击的?

javascript - Web请求检查服务器

asp.net - SQL 连接强行关闭

asp.net - 恶意用户可以修改 View 状态吗?

security - 使用 javax.faces.STATE_SAVING_METHOD 在客户端保存 session 的含义

c# - 将用户重定向到 Paypal 站点以及来自代码隐藏的编程数据

c# - 在数据列表中,如何添加一个从所选行获取其 Id 的按钮?

SQL Server DELETE 错误 - 子查询返回超过 1 个值

sql - 替代使用 ROW_NUMBER 以获得更好的性能

c# - 无效的 View 状态,Base-64 字符数组或字符串的无效长度