SqlDependencyは、変更が発生したことを通知するだけであり、テーブル全体を再度読み取る必要があります。通知の割合が低い場合にうまく機能します。高率では、通知にはかなりのコストがかかることを考慮する必要があります。 不思議な通知 をご覧ください。 SqlDependencyの動作の詳細については。ご覧のとおり、かなりのコストがかかります:
- 通知の設定(sys.dm_qn_subscriptionsおよびSSBシステムテーブルへの書き込み)
- 通知の送信(sys.dm_qn_subscriptionsの記述)
- 通知の配信(SSBシステムテーブル、ターゲットキューへの書き込み)
- 通知の受信(ターゲットキュー、SSBシステムテーブルへの書き込み)
これはかなりの数の書き込みです。常に通知を受け取ると、コストはすぐに増加します。
しかし、本当の問題は、アプリケーションで一定の変化率にどの程度正確に反応したいかということです。何を知りたいですか、その何か かわった?確かに変更されているため、アプリケーションがデータを必要とするときはいつでも、最新の状態をより適切に読み取ることができます。ポーリングも意味がありません。本当に必要なのは、変更のいずれかです。追跡 または、より可能性が高いのは、カスタムベースの変更のキュー> 変更の発信者によって供給されます。