Online
Registriert seit: 15. Mär 2007
4.093 Beiträge
Delphi 12 Athens
|
AW: Hunderte Clients im Sekundentakt über gesperrte Datensätze informieren
20. Jun 2024, 12:13
TL;DR;
Ich würde nicht versuchen die Tabelle selbst zu locken.
Wäre es nicht denkbar mit einer zweiten, schnellen Lock-Tabelle zu arbeiten, bevor man dann die eigentliche Tabelle ändert?
Der Erste, der da einen Record belegt setzt ein Flag mit Timestamp und der schnellere gewinnt.
Wenn weitere den gleichen Record locken wollen, dann sollte es krachen.
Danach kann man doch in aller Ruhe den Record bearbeiten.
Zusätzlich könnte diese Lock-Tabelle eine Kopie des eigentlichen Records enthalten.
Nach einer Änderung könnte man das dann wieder freigeben, indem man nur den Status auf READY ändert.
Dann könnte ein anderer Prozess meinetwegen regelmäßg drüberlaufen und alle die READY sind abschliessen und zum Zielrecord übertragen.
So würde keiner direkt auf der Ziel-Tabelle arbeiten, sondern immer nur über die "Shadow"-Tabelle,
die nach einer Bearbeitung sich selbst aufräumen kann.
Das Ganze könnte man noch mit StoredProcedures und Transactions garnieren.
Ist es vielleicht sowas, was Dein Kunde sucht?
|