【问题标题】:How efficient SqlDependency (Service Broker) is compared to query by timer?SqlDependency (Service Broker) 与计时器查询相比效率如何?
【发布时间】:2013-01-26 08:51:44
【问题描述】:

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

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

  1. SqlDependency 这将使我能够收到几乎实时的通知。
  2. 某个计时器正在检查表。

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

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

【问题讨论】:

  • 一个问题——记录是如何添加到数据库中的?你有执行它们的服务吗?
  • 记录是由第三方服务添加的,我无法控制为什么我唯一的选择是跟踪数据库本身。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多