Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

.NET SqlDependency con molte notifiche rispetto a polling ad alta frequenza?

SqlDependency ti avviserà solo che si è verificata una modifica e dovrai rileggere l'intera tabella. Funziona bene con un basso tasso di notifiche. Ad un ritmo elevato, devi considerare che le notifiche hanno un costo significativo. Vedi La misteriosa notifica per maggiori dettagli su come funziona SqlDependency. Come puoi vedere, c'è un costo significativo:

  • impostare la notifica (scrivendo in sys.dm_qn_subscriptions e nelle tabelle di sistema SSB)
  • attivazione della notifica (scrivendo sys.dm_qn_subscriptions)
  • inviare la notifica (scrive nelle tabelle di sistema SSB, coda di destinazione)
  • ricezione della notifica (scritture nella coda di destinazione, tabelle di sistema SSB)

Sono poche le scritture, il costo aumenterà rapidamente se vieni informato costantemente.

Ma la vera domanda è:come si desidera esattamente reagire nell'applicazione a un tasso di cambiamento costante? cosa vuoi sapere, quel qualcosa cambiato? beh, sai, lo fa sempre, ogni volta che l'applicazione ha bisogno dei dati è meglio leggere lo stato più recente, perché sicuramente è cambiato. Anche il sondaggio non ha senso. Sembra che quello che vuoi veramente sia change monitoraggio o, più probabilmente, una coda di modifiche alimentato dagli autori del cambiamento.