SqlDependency (Service Broker) 与计时器查询的效率比较如何



当数据库(SQL Server 2008)的一个表中添加了新记录时,我需要通知用户(大约100个客户端)我的软件(C#,.NET 3.5)。如果我理解正确,这样的操作应该符合缓存失效的条件,这正是SqlDependency的目的,如果我错了,请纠正我。

为此,我可以看到 2 个选项:

  1. SqlDependency这将允许我接收几乎实时的通知。
  2. 通过某个计时器检查表。

但我以前从未使用过SqlDependency,也不知道它到底有多可靠?我的意思是,我是否可以允许我的应用程序在一天开始时SqlDependency.Start()运行,并确保它无论如何都会侦听通知 10 小时?当然,我知道我必须正确响应服务查询通知。就数据库性能而言,与计时器查询相比,这样做真的更好吗?数据库实际上有什么相当大的区别吗?

我正在考虑使用SqlDependency主要是因为我不确定让我的所有用户每 5 分钟打开连接并查询同一数据库中的同一表是否是一个最佳主意。

我也

一直在寻找 SqlDependency 类的性能指标,但不幸的是没有找到。但是,如果我不得不猜测,我会说 SqlDependency 比外部轮询机制更有效,因为其他一切都保持不变(包括轮询间隔 = SqlDependency 的内部轮询间隔)。我这样说是因为在外部轮询时,您必须考虑每个轮询请求产生的开销。使用 SqlDependency,服务经过优化以减少开销(至少,开销将小于外部轮询)。只有我的两美分,但我在使用 SQLDependency 与表的定期轮询(性能影响)中读到,效果恰恰相反。我将进行自己的测试并回发适用于我的方案的内容。

最新更新