平面文件中的视图状态与 SQLserver 中的视图状态
-
20-09-2019 - |
题
我自己写的 PageStatePersister
类基于 SessionPageStatePersister
其中写了最近的 10 个 Viewstate
s 表示到共享磁盘的会话。我认为这会比保留更好的规模 Viewstate
由于所有 Web 服务器都可以访问它,因此它们不必处理过期问题,并且使用更少的内存。
当用户关闭浏览器时,它会通知服务器,服务器会删除那些两小时内未访问的文件。到目前为止一切都很好,但我想知道存储是否会更快、更有效 Viewstate
而是在 SQL Server 数据库中。
- 每个
ViewState
文件平均为30k。 - 目前它只是读取隐藏字段来获取 Viewstate 键并直接访问文件并反序列化。无需排序或搜索。
- 每小时大约有 2000 个并发用户,并且每小时保存最近 20 个 Viewstate 会话将大约有 20k 临时视图文件。
- 它必须定期遍历文件并删除最旧的文件。
那么在这种情况下哪个更好:A 平面文件 系统或一个 数据库?
解决方案
将 ViewState 存储在 SQL Server 中会更好地扩展。例如,如果您最终希望从最近 10 个增加到最近 50 个,则数据库负载的增加相对较小。通常应尽可能避免磁盘 I/O,而不是 DB I/O。清理操作也会工作得更好,因为在磁盘上废弃文件的荒地中寻找可能比 WHERE DateInserted > 20 minutes ago
.
不隶属于 StackOverflow