我正在学习 MS 认证,我正在做的一项实践测试有一个问题,其中争论的焦点是将会话存储在 SQL Server 和 StateServer 之间的性能。
鉴于应用程序在 Web 场中运行,哪种会话状态解决方案可提供最佳性能(SQL Server 或 StateServer),最重要的是,为什么?
我正在学习 MS 认证,我正在做的一项实践测试有一个问题,其中争论的焦点是将会话存储在 SQL Server 和 StateServer 之间的性能。
鉴于应用程序在 Web 场中运行,哪种会话状态解决方案可提供最佳性能(SQL Server 或 StateServer),最重要的是,为什么?
State Server 速度更快,因为它将会话数据存储在内存字典中。SQL Server 速度较慢,因为它存储在将数据持久保存到磁盘的数据库中。
SQL 服务器也较慢,因为所有内容都存储在一个表中,随着越来越多的客户端访问/更新会话数据,这会导致争用。
SQL Server更可靠,因为它持久化到磁盘并且可以设置为具有故障转移功能的集群。
请参阅本文的序言以获得深入的解释。
一点但重要的旁注:InProc 不能在农场中使用,顾名思义,它在当前的 w3wp 进程中运行,并且不能在农场之间共享。StateServer 是一个 Windows 服务,因此使用 StateServer 的速度取决于运行 stateserver 服务的机器的速度,它只是内存。SQL 当然需要写入和检索数据,这可能比只使用内存要慢。
从这里:
从这个链接:http ://www.eggheadcafe.com/articles/20021016.asp
表现
InProc - 最快,但会话数据越多,Web 服务器消耗的内存就越多,这会影响性能。
StateServer - 当存储基本类型的数据(例如字符串、整数等)时,在一个测试环境中它比 InProc 慢 15%。但是,如果要存储大量对象,序列化/反序列化的成本会影响性能。您必须为自己的场景进行性能测试。
SQLServer - 当存储基本类型的数据(例如字符串、整数等)时,在一个测试环境中它比 InProc 慢 25%。与 StateServer 中的序列化警告相同。
因此,StateServer 似乎比 SQL Server 存储会话状态要快一些。
就原因而言,我建议 SQL Server 具有更多用途,也可能用于其他用途。不仅如此,存储机制是磁盘,因为 StateServer 在单独的进程中运行,但它只是将数据存储在另一个进程的内存空间中,而不必将其写入磁盘(虚拟内存允许)
SQL Server(内存中)是答案 - SQL 2014 中可用