我正在學習MS認證,我正在做的一個練習測試有一個問題,爭用的焦點是將會話存儲在SQL Server中的性能爲與StateServer相反。SQLServer vs StateServer for ASP.NET會話狀態性能
鑑於應用程序正在Web場中運行,會話狀態的哪個解決方案會提供最佳性能(SQL Server或StateServer),最重要的是,爲什麼?
我正在學習MS認證,我正在做的一個練習測試有一個問題,爭用的焦點是將會話存儲在SQL Server中的性能爲與StateServer相反。SQLServer vs StateServer for ASP.NET會話狀態性能
鑑於應用程序正在Web場中運行,會話狀態的哪個解決方案會提供最佳性能(SQL Server或StateServer),最重要的是,爲什麼?
State Server速度更快,因爲它將會話數據存儲在內存字典中。 SQL Server速度較慢,因爲它存儲在將數據保存到磁盤的數據庫中。
由於越來越多的客戶端訪問/更新會話數據,SQL服務器的速度也會變慢,因爲所有數據都存儲在一個表中,導致爭用。
SQL服務器是更可靠因爲它被持久保存到磁盤並且可以設置爲具有故障轉移功能的羣集。
請參閱this article的序言部分以獲得深入的解釋。
謝謝馬克,非常清楚並且重點回答 – 2009-09-20 21:07:53
從這個鏈接:http://www.eggheadcafe.com/articles/20021016.asp
性能
是InProc - 最快的,但更多的會話數據,更多的內存是 消耗的Web服務器上,並且 可能會影響性能。 StateServer - 當存儲基本類型的數據(例如字符串,整數, 等)時,在一個測試環境中,它比InProc慢15% 。但是,如果您要存儲 批次 的對象,則序列化/反序列化的成本 可能會影響性能 。您必須爲自己的 方案執行性能測試。 SQLServer-當存儲基本類型數據(例如字符串,整數, 等)時,在一個測試環境中,它比InProc慢25%,即 。與StateServer中的 序列化相同的警告。
所以它似乎是StateServer的快一點,用於存儲會話狀態的SQL Server。
就我而言,我建議SQL Server更多用途,並可能用於其他方面。不僅如此,存儲機制還在磁盤上,StateServer在單獨的進程中運行,但它只是將數據存儲在另一個進程的內存空間中,而不必將其寫入磁盤(虛擬內存允許)
有點但重要的注意事項:InProc在服務器場中不可用,顧名思義,它運行在當前的w3wp進程中,無法在服務器場中共享。 StateServer是一項Windows服務,因此使用StateServer的速度取決於運行狀態服務器的計算機的速度,它只是內存。當然,SQL需要編寫數據並進行檢索,這可能比內存更慢。
從here:
還要記住,SQL Server和進程外包含會話數據的序列化和反序列化,這是一個inproc中額外的性能開銷不會帶來負擔。 – 2017-01-12 07:54:06
除此之外,SQL服務器和進程外通常需要通過網絡發送數據,因此也會涉及網絡通信的開銷,InProc也沒有負擔。 – 2017-01-12 07:56:08
SQL服務器(在內存中)就是答案 - 在SQL中使用2014
有關ASP.net會話狀態的更多詳細信息,看看這裏:> http://msdn.microsoft.com /fr-fr/library/system.web.sessionstate.httpsessionstate%28v=vs.80%29.aspx – 7addan 2013-03-26 10:24:49