SQLServer的VS的StateServer ASP.NET会话状态的性能(SQLServer

2019-07-18 13:31发布

我学习了MS认证和实践的检验我在做一个有问题,其中争论的焦点是存储在SQL Server中的会议,而不是为StateServer之间的性能。

由于应用程序是一个Web场,这对于会话状态的解决方案提供了最好的性能(SQL Server或StateServer的),最重要的是在运行的,为什么呢?

Answer 1:

状态服务器更快,因为它存储在内存中的字典会话数据。 因为它存储在数据持久化到磁盘上的数据库的SQL Server较慢。

SQL服务器也比较慢,因为一切都存储在一个表中,这导致争为越来越多的客户访问/更新会话数据。

因为它被保存在磁盘上,并且可以设置为与故障转移功能的群集SQL服务器更加可靠

见序言本文为深入解释。



Answer 2:

有一点,但重要的旁注:InProc方式不是一个农场使用,顾名思义,它在当前的w3wp理线运行,并且不能跨农场共享。 StateServer的是一个Windows服务,所以使用的StateServer的速度dependend如何快速的机器StateServer的服务运行时,它只能是记忆。 当然SQL需要将数据写入和检索,这可能不仅仅是内存要慢。

从这里 :

  • 在过程中。 在过程中会表现最好,因为会话状态的内存保持在ASP.NET进程中。 托管在单个服务器上的Web应用程序,其中用户是有保证的应用程序将被重新定向到正确的服务器时,或者当会话状态数据不是关键的(在这个意义上,它可以被重新构造或重新填充) ,这是选择模式。
  • 出来的过程。 当性能是很重要的,最好使用此模式,但你不能保证哪个服务器的用户将要求的应用程序。 随着进程外的模式,你得到的来自内存和管理国家所有服务器单独过程的可靠性读取性能。
  • SQL Server中。 该模式最好是使用时的数据的可靠性是将应用程序的稳定性根本,随着数据库可以群集为故障情况。 性能是不一样快出来的过程,但代价是可靠性的更高的水平。


Answer 3:

从这个链接: http://www.eggheadcafe.com/articles/20021016.asp

性能

  • 是InProc - 最快的,但更多的会话数据,将更多的内存消耗在Web服务器上,这可能会影响性能。

  • 的StateServer - 当存储基本类型的数据(例如字符串,整数等),在一个测试环境中它比是InProc慢15%。 然而,序列化/反序列化的成本,如果你存储大量的对象会影响性能。 你必须为你自己的情况做性能测试。

  • SQLServer的 - 当存储基本类型的数据(例如字符串,整数等),在一个测试环境中它比是InProc慢25%。 有关序列中的StateServer同样的警告。

因此,它似乎是StateServer的快一点,用于存储会话状态的SQL Server。

在为什么而言,我建议在SQL Server更多用途,将有可能被用于其他事情也是如此。 不仅如此,而且所述存储机制是磁盘,其中作为StateServer的是在一个单独进程中运行,但它被简单地存储在所述其它过程的存储空间内的数据,而不是必须将其写入到磁盘(虚拟存储器允许的话)



Answer 4:

SQL服务器(在内存中)就是答案 - 在SQL 2014可用

http://blogs.msdn.com/b/kenkilty/archive/2014/07/03/asp-net-session-state-using-sql-sever-in-memory.aspx



文章来源: SQLServer vs StateServer for ASP.NET Session State Performance