Il y a un petit système, où une table de base de données sur la file d'attente MSSQL 2005. Plusieurs applications sont en train d'écrire à cette table, et une application est en train de lire et de traitement d'une manière FIFO.traitement parallèle de file d'attente de la base de données
je dois en faire un peu plus avancé pour être en mesure de créer un système distribué, où plusieurs applications de traitement peut fonctionner. Le résultat devrait être que l'application de traitement 2-10 devrait être capable de fonctionner et ils ne devraient pas interférer les uns les autres pendant le travail.
Mon idée est d'étendre la table de file d'attente avec une ligne indiquant qu'un processus travaille déjà là-dessus. L'application de traitement mettra d'abord à jour la table avec son idetifyer, puis demandera les enregistrements mis à jour.
donc quelque chose comme ceci:
start transaction
update top(10) queue set processing = 'myid' where processing is null
select * from processing where processing = 'myid'
end transaction
Après le traitement, il définit la colonne de traitement de la table à autre chose, comme « fini », ou autre chose.
J'ai trois questions à propos de cette approche.
Premièrement: cela peut-il fonctionner sous cette forme? Deuxièmement: si cela fonctionne, est-ce efficace? Avez-vous d'autres idées pour créer une telle distribution?
Troisième: En MSSQL le verrouillage est basée sur les lignes, mais après sont verrouillés une quantité de lignes, le verrou est étendu à toute la table. Ainsi, la deuxième application ne peut y accéder, jusqu'à ce que la première application ne libère pas la transaction. Quelle taille peut avoir la sélection (top x) pour ne pas verrouiller toute la table, ne créer que des verrous de ligne?
C'est très bien, exactement ce dont j'ai besoin. Merci. – Biri
Nice. J'ai dit que je serais intéressé ;-) – philsquared
une chose à surveiller est un code non traité où un système supprime certaines informations mais se bloque/s'arrête avant de pouvoir traiter l'information. un délai d'attente avant de remettre en service le travail permettrait de résoudre ce problème mais peut devenir assez désordonné – mjallday