考虑到应用程序在Web集群中运行,哪种会话状态的解决方案具有最佳性能(SQL Server或StateServer),最重要的是为什么?
State Server更快,因为它将会话数据存储在内存字典中。SQL Server较慢,因为它存储在一个将数据持久化到磁盘的数据库中。
SQL Server也较慢,因为所有内容都存储在一个表中,随着越来越多的客户端访问/更新会话数据,会导致争用。
SQL Server更可靠,因为它被持久化到磁盘,并且可以设置为具有故障转移能力的群集。
有关详细说明,请参见本文中的前言部分。
从这个链接: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 中使用