Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server, utilisant une table comme file d'attente

Le seul moyen d'obtenir une sortie de file d'attente bloquante sans regroupement est WAITFOR (RECEIVE) . Ce qui implique des files d'attente Service Broker, avec toute la surcharge supplémentaire.

Si vous utilisez des tables ordinaires comme files d'attente vous ne pourrez pas obtenir de blocage sans interrogation. Vous devez interroger la file d'attente en demandant une opération de retrait de la file d'attente, et si elle ne renvoie rien, mettre en veille et réessayer plus tard.

Je crains de ne pas être d'accord avec Andomar ici :alors que sa réponse fonctionne comme une question générique "y a-t-il des lignes dans le tableau ?" en ce qui concerne la mise en file d'attente, en raison de la nature occupée de la mise en file d'attente/de la file d'attente qui se chevauchent, la vérification de lignes comme celle-ci est un blocage (presque) garanti sous charge. Lorsqu'il s'agit d'utiliser des tables comme file d'attente, il faut toujours s'en tenir aux opérations de base de mise en file d'attente/de retrait de la file d'attente et ne pas essayer de trucs fantaisistes.