2

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

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

  1. SqlDependency这将使我能够收到几乎实时的通知。
  2. 通过一些计时器检查表。

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

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

4

1 回答 1

0

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

于 2013-09-19T21:07:58.103 回答