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

SQL Server, utilizzando una tabella come coda

L'unico modo per ottenere una rimozione dalla coda di blocco non in pool è WAITFOR (RECEIVE) . Il che implica le code di Service Broker, con tutto il sovraccarico aggiunto.

Se stai utilizzando tabelle come code non sarai in grado di ottenere il blocco senza polling. È necessario eseguire il polling della coda chiedendo un'operazione di rimozione dalla coda e, se non restituisce nulla, dormire e riprovare più tardi.

Temo di non essere d'accordo con Andomar qui:mentre la sua risposta funziona come una domanda generica "ci sono righe nella tabella?" quando si tratta di accodare, a causa della natura occupata dell'accodamento/rimozione dalla coda sovrapposti, il controllo di righe come questa è un deadlock (quasi) garantito sotto carico. Quando si tratta di utilizzare le tabelle come coda, è necessario attenersi sempre alle operazioni di accodamento/rimozione dalla coda di base e non provare cose stravaganti.