SqlDependency(Service Broker)与定时器查询的效率如何?

时间:2013-01-26 08:51:44

标签: c# .net sql-server-2008 sqldependency

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

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

  1. SqlDependency这将允许我接收几乎实时的通知。
  2. 通过某个计时器检查表。
  3. 但我之前从未使用过SqlDependency,也不知道它有多可靠?我的意思是,我可以允许我的应用程序在一天开始时运行SqlDependency.Start(),并确保它会在10小时内收听通知吗?当然,我知道我必须正确地对服务查询通知作出反应。与数据库性能方面的计时器查询相比,这样做真的更好吗?实际上数据库是否有相当大的差异?

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

1 个答案:

答案 0 :(得分:0)

我一直在寻找SqlDependency类的性能指标,但遗憾的是还没找到。但是如果我不得不猜测,我会说SqlDependency比外部轮询机制更有效,因为其他一切都保持不变(包括轮询间隔= SqlDependency的内部轮询间隔)。我这样说是因为在外部轮询时,你必须考虑每个轮询请求的开销。使用SqlDependency,服务被优化以减少开销(至少,开销将小于外部轮询)。只是我的两分钱,但我在Using SQLDependency vs. periodic polling of a table (performance impact)看到效果恰恰相反。我将进行自己的测试并回发适用于我的方案的内容。