J'ai implémenté un service Windows avec une file d'attente stockée dans une table de base de données.Processeur élevé lorsque la file d'attente de service Windows est stockée dans une base de données
J'ai une table appelée MyQueue
et chaque ligne de cette table spécifie une tâche pour le service Windows. Lorsque la tâche est terminée, la ligne est marquée avec un drapeau spécial, ce qui signifie que cette tâche a été complétée.
Mon service Windows fonctionne de la manière suivante:
while(true)
{
// get the first row from MyQueue that is not yet marked
// complete the task from the row
// mark the row as completed
}
Ce travaux de conception, mais comme je l'utilise while(true)
il envoie en permanence des demandes à la base de données pour vérifier s'il y a des nouvelles lignes, ce qui provoque l'utilisation du processeur à augmenter plus de 60%.
Existe-t-il un moyen plus efficace d'implémenter une file d'attente stockée dans une table de base de données?
Qu'est-ce qui ajoute des lignes à MyQueue? Ne pouvez-vous pas également alerter votre service? –