我学习了MS认证和实践的检验我在做一个有问题,其中争论的焦点是存储在SQL Server中的会议,而不是为StateServer之间的性能。
由于应用程序是一个Web场,这对于会话状态的解决方案提供了最好的性能(SQL Server或StateServer的),最重要的是在运行的,为什么呢?
我学习了MS认证和实践的检验我在做一个有问题,其中争论的焦点是存储在SQL Server中的会议,而不是为StateServer之间的性能。
由于应用程序是一个Web场,这对于会话状态的解决方案提供了最好的性能(SQL Server或StateServer的),最重要的是在运行的,为什么呢?
状态服务器更快,因为它存储在内存中的字典会话数据。 因为它存储在数据持久化到磁盘上的数据库的SQL Server较慢。
SQL服务器也比较慢,因为一切都存储在一个表中,这导致争为越来越多的客户访问/更新会话数据。
因为它被保存在磁盘上,并且可以设置为与故障转移功能的群集SQL服务器更加可靠 。
见序言本文为深入解释。
有一点,但重要的旁注:InProc方式不是一个农场使用,顾名思义,它在当前的w3wp理线运行,并且不能跨农场共享。 StateServer的是一个Windows服务,所以使用的StateServer的速度dependend如何快速的机器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服务器(在内存中)就是答案 - 在SQL 2014可用
http://blogs.msdn.com/b/kenkilty/archive/2014/07/03/asp-net-session-state-using-sql-sever-in-memory.aspx