我有webservice(WCF)和MembershipProvider/RoleProvider來檢查憑據。在服務器上緩存數據是否會提高性能?
當服務調用 - 各種方法調用提供者獲取用戶,通過Id獲取登錄名,通過登錄名獲得Id等。最終結果 - 在Profiler中查看時 - 我可以看到很多聊天。
我可以很容易地將緩存合併到MembershipProvider和RoleProvider的緩存中,因此它會緩存用戶,並且不會每次都打到DB。
用戶列表不大。我認爲它不會超過100-200。
一方面 - 我知道SQL Server會緩存小表,並設計爲處理這些選擇。 OTOH - 我在探查器中看到它:)而Web服務器端的內存將被佔用。另外,Web服務器上的查找仍然需要完成(CPU /內存)。
我想我想聽聽你的經驗,我應該甚至擔心這個東西嗎?我放置標籤「戰略上」,所以希望DBA和開發人員都會給我一些輸入:)
爲什麼優化直到需要?即使是小型的SQL Server安裝也可以毫無困難地處理數千個請求。 ADO.Net連接池是有效的。爲什麼浪費時間在200個用戶應用程序上查詢少量查詢時,最好在其他地方花費時間? –
@ ChrisM.-雖然SQL Server的*吞吐量會很好,但延遲通常非常高。對於大多數非平凡的查詢,您至少需要10ms。如果你瞄準100-200毫秒的頁面加載,這是非常重要的。 – JulianR
@ChrisM:我同意不成熟的優化是一切邪惡的根源,但這並不意味着簡單地解僱這個話題。有關擴展的重要性的討論,請參見[如何使用SQL Server的StackOverflow擴展](http://www.brentozar.com/archive/2011/11/11/how-stackoverflow-scales-sql-server-video/)。 –