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