SQL Cache依赖关系的性能问题

Kja*_*son 21 sql sql-server-2005 sqlcachedependency sql-server-2008

我正在开发一个项目,我们正在考虑在SQL Server 2005/2008中使用SQLCacheDependency,我们想知道这将如何影响系统的性能.

所以我们想知道以下问题

SQLCacheDependency对象(查询通知)的数量是否会对SQL Server性能产生负面影响,即对受影响的表进行插入,更新和删除操作?

单个表上的50000个不同查询通知在SQL Server 2005/2008中对该表的插入和删除有什么影响(性能方面).

有没有关于如何使用SQLCacheDependencies的建议?任何官方的做什么和不该做什么?我们在互联网上找到了一些信息,但没有找到有关性能影响的信息.

如果这里有人对这些问题有一些答案,那就太好了.

Ras*_*wla 6

使用轮询机制的SQL Cache依赖项不应该是sql server或应用程序服务器上的负载.

让我们看看sqlcachedependency工作和分析它们的所有步骤:

  1. 为sqlcachedependency启用了数据库.
  2. 表格为sqlcachedependency启用了"Employee".(可以是任意数量的表)
  3. 更新Web.config以启用sqlcachedependency.
  4. 配置了使用sql缓存依赖关系的页面.而已.

内部:

  • 步骤1.在数据库中创建一个表'ASPnet_sqlcachetablesforchangenotification',它将存储启用了sqlcachedependency的'Employee'表名.并添加一些存储过程.
  • 步骤2.在'ASPnet_sqlcachetablesforchangenotification'表中插入'Employee'表条目.还在此"Employee"表上创建插入更新删除触发器.
  • 步骤3.通过提供connectionstring和polltime来启用sqlcachedependency的应用程序.

只要"员工"表中发生更改,就会触发触发器,该触发器会更新"ASPnet_sqlcachetablesforchangenotification"表.现在应用程序轮询数据库说每隔5000毫秒,并检查"ASPnet_sqlcachetablesforchangenotification"表的任何更改.如果有任何更改,则从内存中删除相应的缓存.

缓存的巨大好处与数据的新鲜度相结合(最近的数据可能是5秒陈旧).轮询由后台进程处理,不应成为性能障碍.因为正如你从上面列表中看到的那样,任务对CPU的要求最低.


mrd*_*nny 1

这个页面似乎有一些关于设置和使用哪种技术的好信息(当然我只是浏览了一下)。

  • 是的,这些是设置缓存依赖项的说明,但这不是问题。问题是当缓存请求很多时 SQL 操作的性能损失。不幸的是,这篇文章根本没有任何相关信息。:-( (2认同)