2012-01-28 44 views
0

我想通過使用SQLCacheDependency類來緩存帶有多個結果集的SQL存儲過程。存儲過程中的前三個查詢是對網站上所有用戶通用的查詢,而第四個查詢則會檢索按用戶名過濾的數據。使用多個結果集緩存SQL Server查詢

由於存儲過程中的第四個查詢是由用戶名過濾的,這是否意味着SQLCacheDependency類會在每次其他用戶執行時從Cache中移除所有結果集,或者這是否意味着它會命中數據庫以獲得存儲過程中第四個查詢的結果,並從緩存中檢索前3個查詢的結果?

在此先感謝

回答

1

由於應用程序緩存是全球性的(即在同一高速緩存用於所有用戶),你會可能發生的是,用戶第一的結果將被緩存,並擔任了所有後續用戶。顯然不是你想要的結果。從the SQLCacheDependency documentation

中的SqlCacheDependency類監視特定的SQL Server數據庫 表。當表更改時,與該表關聯的項目是從緩存中刪除的 ,並且該項的新版本被添加到 緩存。

您應該分開所有3個第一個查詢,獨立緩存它們,而不是緩存第4個。緩存實際上是爲了分攤許多用戶的昂貴操作(在本例中爲SQL查詢)的成本。如果你想存儲一些用戶特定的東西,那就是SessionCookiesViewState的用途。

+0

感謝您的幫助。 – 2012-02-01 21:07:29