我正在开发一个项目,我们正在考虑在SQL Server 2005/2008中使用SQLCacheDependency,我们想知道这将如何影响系统的性能.
所以我们想知道以下问题
SQLCacheDependency对象(查询通知)的数量是否会对SQL Server性能产生负面影响,即对受影响的表进行插入,更新和删除操作?
单个表上的50000个不同查询通知在SQL Server 2005/2008中对该表的插入和删除有什么影响(性能方面).
有没有关于如何使用SQLCacheDependencies的建议?任何官方的做什么和不该做什么?我们在互联网上找到了一些信息,但没有找到有关性能影响的信息.
如果这里有人对这些问题有一些答案,那就太好了.
使用轮询机制的SQL Cache依赖项不应该是sql server或应用程序服务器上的负载.
让我们看看sqlcachedependency工作和分析它们的所有步骤:
为sqlcachedependency启用了数据库.
表格为sqlcachedependency启用了"Employee".(可以是任意数量的表)
更新Web.config以启用sqlcachedependency.
配置了使用sql缓存依赖关系的页面.而已.
内部:
步骤1.在数据库中创建一个表'ASPnet_sqlcachetablesforchangenotification',它将存储启用了sqlcachedependency的'Employee'表名.并添加一些存储过程.
步骤2.在'ASPnet_sqlcachetablesforchangenotification'表中插入'Employee'表条目.还在此"Employee"表上创建插入更新删除触发器.
步骤3.通过提供connectionstring和polltime来启用sqlcachedependency的应用程序.
只要"员工"表中发生更改,就会触发触发器,该触发器会更新"ASPnet_sqlcachetablesforchangenotification"表.现在应用程序轮询数据库说每隔5000毫秒,并检查"ASPnet_sqlcachetablesforchangenotification"表的任何更改.如果有任何更改,则从内存中删除相应的缓存.
缓存的巨大好处与数据的新鲜度相结合(最近的数据可能是5秒陈旧).轮询由后台进程处理,不应成为性能障碍.因为正如你从上面列表中看到的那样,任务对CPU的要求最低.