从我读到的,当会话状态处于SQLServer模式时,它总是必须访问DB来获取和设置Session变量。是真的还是在某些情况下它可以使用缓存?如果你有任何关于这种模式如何工作的好文章,请随时在这里分享。我似乎无法在谷歌上找到任何相关内容。
我正在尝试评估使用它的风险(性能,可靠性等)
谢谢!
答案 0 :(得分:2)
可靠性:您的SQL Server实例有多可靠?它是聚集的吗?它在远程服务器上吗?
性能:SQL Server会话状态是性能最低的会话状态选项之一。我假设您在ASP.NET应用程序中使用它并且具有多个Web服务器。对于需要会话状态的每个请求,它将执行至少1个数据库查询。如果在请求期间更新会话状态,则将执行一个额外的更新查询。此外,将读取/更新存储在会话状态中的所有内容。如果你可以小心限制哪些页面/资源需要会话状态,它可能会执行正常。
替代方案:如果您只在一台Web服务器上运行,则可以使用State Server。如果您需要支持多个Web服务器,可以考虑使用App Fabric Caching Session State提供程序或NCache。这两种方法都比SQL Server表现更好,并且可能比SQL Server具有更强的容错能力。