2012-01-28 40 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