我有一张小桌子(大约200行),它一直在变化(每秒几次)
我一直在寻找一个解决方案,我可以在每次更改时收到数据库的通知,而不是轮询它(让我们说每秒5-10次)。
此外,我希望每次只接收更改的行而不是获取整个表 - 我发现使用SqlDependency类实现这一点相当困难。
需要考虑的事情:
有没有办法使用SqlDependency做到这一点?
这种情况下的最佳做法是什么?
BTW:我正在使用SQL Server 2012
先谢谢
答案 0 :(得分:6)
SqlDependency只会通知您发生了更改,并且您必须重新读取整个表。它适用于低通知率。在很高的速度下,您必须考虑通知费用很高。有关SqlDependency如何工作的更多详细信息,请参阅The Mysterious Notification。正如您所见,成本很高:
如果您不断得到通知,那么费用会很快增加。
但真正的问题是,您希望在应用程序中如何对持续变化率作出反应?你想知道什么,某些东西改变了?好吧,你知道,它总是这样,只要应用程序需要数据,它就能更好地读取最新状态,因为它肯定会改变。轮询也没有意义。听起来你真正想要的是change tracking,或者更可能是由变更发起人提供的基于自定义的queue of changes。