- Daten in einer MySQL Tabelle sollen abgearbeitet werden sollen.
Die Reihenfolge der Bearbeitung muss nicht zwingend einer bestimmten Reihung folgen -- gelegentlich kann das aber auch nötig sein.
Damit das schneller erfolgt sollen mehrere PCs/Programminstanzen/Clients daran arbeiten.
Jeder Datensatz soll nur einmal bearbeitet werden.
Das ganze soll auch performant sein
edit: Clients sollen nach Bedarf zugeschaltet oder abgeschaltet werden können
bisher habe ich folgende Strategie angewandt:
- Abfragen der nächsten 20 unbearbeiteten Datensätze
zufälliges Auswählen eines Datensatzes aus den 20
Versuch den ausgewählten Datensatz auf Rowlevel zu sperren
falls das nicht klappt alles von vorne.
Die (recht große) DB konnte nicht schnell genug 'liefern' was die Clients ins Timeout geschickt hat.
Frage:
Gibt es eine elegantere Lösung? z.B. eine Variante wie SELECT LAST_INSERT_ID() bei autoincrement Feldern ?
Trigger?
Stored Procedure?
Danke im voraus