Hallöle ihr!
Ich arbeite derzeit an einem Projekt bei dem ich MySQL als Datenbank verwende. Es läuft alles so weit ganz gut nur stehe ich bei einer Tabelle vor einem mehr oder weniger großen Problem. In dieser einen Tabelle habe ich einen sehr hohen Datendurchsatz. Es werden zeitweise mehrere Datensätze pro Sekunde eingefügt. Diese Datensätze werden allerdings auch wieder ausgelesen und sofort darauf gelöscht. Es sind also quasi "Einweg-Datensätze", die nur einmal geschrieben und danach sofort ausgelesen und wieder gelöscht werden. Diese Tabelle besitzt aber nun wiederum nur zwei Felder, um den Datendurchsatz und die Belastung auf dem absoluten Minimum zu halten. Es ist kein Feld mit einer ID oder ähnlichem vorhanden um einen Datensatz eindeutig identifizieren zu können. Ich möchte nun einen SELECT ausführen und Datensätze die bestimmte Bedingungen erfüllen auslesen. Damit diese Datensätze dann aber kein zweites Mal ausgelesen werden können müssen diese nach dem SELECT gelöscht werden.
Bisher habe ich es so gehandhabt, dass ich unmittelbar nach dem SELECT ein DELETE mit den gleichen WHERE-Bedingungen ausführe, allerdings kann es passieren, dass zwischen dem SELECT und dem DELETE ein neuer Datensatz eingefügt wird, der von dem SELECT noch nicht ausgeliefert wurde aber durch die gleiche WHERE-Bedingung beim DELETE mit gelöscht wird. Der Datensatz wird also "verschluckt".
Nun meine eigentliche Frage: Gibt es irgendwie die Möglichkeit Datensätze auszulesen und gleichzeitig zu löschen? Oder die ausgelesenen Datensätze zu "markieren" um die in Folge zu löschen?
Oder hätte irgendjemand eine alternative Idee wie ich das Problem lösen könnte?
Danke euch.
Grüße,
Markus