Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

.NET SqlDependency mit vielen Benachrichtigungen im Vergleich zu High-Rate-Polling?

SqlDependency benachrichtigt Sie nur, dass eine Änderung aufgetreten ist, und Sie müssen die gesamte Tabelle erneut lesen. Es funktioniert gut mit einer niedrigen Benachrichtigungsrate. Bei einer hohen Rate müssen Sie berücksichtigen, dass Benachrichtigungen erhebliche Kosten verursachen. Siehe The Mysterious Notification für weitere Details zur Funktionsweise von SqlDependency. Wie Sie sehen, entstehen erhebliche Kosten:

  • Einrichten der Benachrichtigung (Schreiben in sys.dm_qn_subscriptions und in SSB-Systemtabellen)
  • Auslösen der Benachrichtigung (Schreiben von sys.dm_qn_subscriptions)
  • Übermitteln der Benachrichtigung (Schreiben in SSB-Systemtabellen, Zielwarteschlange)
  • Empfang der Benachrichtigung (schreibt in Zielwarteschlange, SSB-Systemtabellen)

Das sind ziemlich viele Schreibvorgänge, die Kosten summieren sich schnell, wenn Sie ständig benachrichtigt werden.

Aber die eigentliche Frage ist, wie genau wollen Sie in der Anwendung auf eine konstante Änderungsrate reagieren? was willst du wissen, dieses etwas geändert? Nun, wissen Sie, das tut es immer, immer wenn die Anwendung die Daten benötigt, liest sie besser den neuesten Stand, weil er sich sicherlich geändert hat. Polling macht auch keinen Sinn. Klingt so, als ob Sie wirklich entweder ändern möchten Verfolgung oder, wahrscheinlicher, eine benutzerdefinierte Änderungswarteschlange von den Urhebern der Änderung gespeist.