Der beste Weg, um eine DB-Tabelle als eine Warteschlange (eine.k.eine batch-queue oder Warteschlange)

Habe ich ein Datenbanken-Tabelle mit ~50K Zeilen, jede Zeile steht für eine Aufgabe, die getan werden müssen. Ich habe ein Programm, dass Extrakte einen job aus der DB, macht den job und legt das Ergebnis wieder in die db. (das system läuft jetzt)

Nun möchte ich, dass es mehr als eine Bearbeitung der Aufgabe zu tun, die Arbeitsplätze aber sicher sein, dass keine Aufgabe zweimal (als performance-Bedenken nicht, dass dies andere Probleme verursachen). Denn der Zugang ist durch eine gespeicherte Prozedur, meine aktuelle ist zwar zu ersetzen, sagte gespeicherte Prozedur mit etwas, das so ähnlich aussieht, wie diese

update tbl 
set owner = connection_id() 
where available and owner is null limit 1;

select stuff 
from tbl 
where owner = connection_id();

BTW; Arbeiter Aufgaben drop könnte es eine Verbindung zwischen einen job zu bekommen und das übermitteln der Ergebnisse. Auch glaube ich nicht erwarten, dass die DB zu kommen sogar in die Nähe der Flaschenhals, es sei denn, ich mess das Teil nach oben (~5 jobs pro minute)

Gibt es irgendwelche Probleme mit diesem? Gibt es einen besseren Weg, dies zu tun?

Hinweis: die "Datenbank-IPC-anti-pattern" ist nur geringfügig apropos, weil hier

  1. Das werde ich nicht tun IPC (es ist kein Prozess der Generierung der Zeilen, Sie alle existieren bereits jetzt) und
  2. der primäre Kritikpunkt beschrieben, die für das anti-pattern ist, dass es Ergebnisse in unnötige Last auf dem DB-Prozesse zu warten, für Nachrichten (in meinem Fall, wenn es keine Meldungen gibt, kann alles Herunterfahren, da alles getan ist)
  • Recht - schlecht = synchrone IPC mit der Blockierung auf ein dbms WÄHLEN Sie als gelesen. Du bist vermutlich tun dies als eine Strategie für die Einführung von Asynchronität.
  • BTW, wenn Sie wollen, um den Leser(s) auf einen timer, ist es nützlich, Sie zu haben, prüfen nur selten, aber wenn Sie Arbeit finden, können Sie abtropfen lassen, die Warteschlange vor dem schlafen wieder.
  • Beachte mein edit: wenn Sie keine Arbeit finden, Sie werden nie Arbeit finden. Aber wenn das nicht stimmt...
InformationsquelleAutor BCS | 2008-11-17
Schreibe einen Kommentar