Ich habe ein Problem mit mysql und meine Nodejs App zu bekommen, gut zusammen zu spielen. Im Grunde habe ich zwei Nodejs "Clients", die MySQL-Tabelle für 50 Zeilen von Daten abfragen. Ich möchte jedoch nicht, dass sie dieselben 50 Zeilen abfragen. Sobald ein Client über 50 Datenzeilen verfügt, führt er einige grundlegende Operationen aus und startet einige Bash-Skripte. Das kann einige Sekunden dauern. Alle 50 Datenzeilen werden in der Tabelle aktualisiert, um anzuzeigen, dass diese Zeilen auf diesem Client "in Verwendung" sind.Mehrere Prozesse Abfragen von MySQL und Aktualisieren von Daten
Das Problem ist, gibt es Situationen, in denen beide Clients zur gleichen Zeit anfordern und die gleichen 50 Zeilen erhalten. Wie kann/kann ich ein innodb-Lock sicher verwenden, um zu verhindern, dass diese Zeilen von einem anderen Client gelesen/verwendet werden? Auch wenn es ein paar Sekunden dauern kann, um sicherzustellen, dass die Zeilendaten die Skripts erfolgreich hochgespielt haben?
Ich bin irgendwie ratlos und brauche ein paar Hinweise.
'SELECT ... FOR UPDATE' ist, was ich erforscht habe. Müsste ich die Anrufe in einer Transaktion tätigen? Gibt es eine bessere Möglichkeit, den "UPDATE" -Teil für 50 Zeilen gleichzeitig auszuführen? – Jerry