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