【问题标题】:Caching a SQL Server Query with Multiple Result Sets使用多个结果集缓存 SQL Server 查询
【发布时间】:2012-01-30 01:07:29
【问题描述】:

我正在尝试通过使用 SQLCacheDependency 类来缓存具有多个结果集的 SQL 存储过程。存储过程中的前三个查询是网站上所有用户通用的查询,第四个检索按用户名过滤的数据。

既然存储过程中的第四个查询是按用户名过滤的,这是否意味着SQLCacheDependency类会在每次其他用户执行时从Cache中删除所有结果集,还是意味着它会命中数据库获取存储过程中第四次查询的结果,并从缓存中取回前3次查询的结果?

提前致谢

【问题讨论】:

    标签: c# asp.net sqlcachedependency


    【解决方案1】:

    由于应用程序缓存是全局的(即所有用户使用相同的缓存),可能会发生的情况是第一个用户的结果将被缓存并提供给所有后续用户。显然不是你想要的结果。来自the SQLCacheDependency documentation

    SqlCacheDependency 类监视特定的 SQL Server 数据库 桌子。当表格改变时,与表格关联的项目 从缓存中删除,并将新版本的项目添加到 缓存。

    您可能应该将所有 3 个第一个查询分开,单独缓存它们,而不是缓存第 4 个。缓存实际上是为了在许多用户之间分摊昂贵操作(在本例中为 SQL 查询)的成本。如果您想存储用户特定的内容,这就是 SessionCookiesViewState 的用途。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多