Was ist die Kontrolle der Parallelität?
Bei der Datenverwaltungsprogrammierung ist die Gleichzeitverwaltung ein Mechanismus, der sicherstellt, dass genaue Ergebnisse durch gleichzeitige Operationen generiert werden. Diese Ergebnisse müssen auch rechtzeitig erhalten werden. Die Genauigkeitskontrolle wird in Datenbanken sehr oft gesehen, in denen es einen Cache mit durchsuchbaren Informationen gibt, die Benutzer erhalten können.
Programmierer versuchen, eine Datenbank so zu entwerfen, dass die Auswirkung wichtiger Transaktionen auf gemeinsame Daten seriell äquivalent sein werden. Dies bedeutet, dass Daten, die Kontakt mit Transaktionsmengen aufnehmen, in einem bestimmten Zustand liegen, in dem die Ergebnisse erhältlich sind, wenn alle Transaktionen seriell und in einer bestimmten Reihenfolge ausgeführt werden. Manchmal sind diese Daten ungültig, da sie durch gleichzeitig durch zwei Transaktionen geändert werden. Dies ist jedoch Overkill und undErmöglicht einem Programmierer nicht, von der Parallelitätskontrolle in einem verteilten System zu profitieren. Die Gleichzeitregelung ermöglicht die gleichzeitige Ausführung mehrerer Transaktionen, während diese Transaktionen voneinander ferngehalten werden, wodurch die Linearisierbarkeit gewährleistet wird. Eine Möglichkeit zur Implementierung der Parallelitätskontrolle ist die Verwendung einer ausschließlichen Sperre für eine bestimmte Ressource für serielle Transaktionsausführungen, die Ressourcen teilen. Transaktionen sperren ein verwendetes Objekt, das verwendet werden soll. Wenn eine andere Transaktion eine Anforderung für das gesperrte Objekt stellt, muss diese Transaktion darauf warten, dass das Objekt entsperrt wird.
Implementierung dieser Methode in verteilten Systemen umfasst Sperrmanager - Server, die Ressourcensperrungen ausstellen. Dies ist den Servern für zentralisierte gegenseitige Ausschlüsse sehr ähnlich, bei denen Clients Sperrungen anfordern und Nachrichten zur Veröffentlichung von Sperren für eine bestimmte Ressource senden können. Erhaltung der Serien exeFür die Kontrolle der Parallelität ist jedoch weiterhin erforderlich. Wenn zwei separate Transaktionen auf einen ähnlichen Objektsatz zugreifen, müssen die Ergebnisse ähnlich sein und wie diese Transaktionen in einer bestimmten Reihenfolge ausgeführt wurden. Um die Reihenfolge für den Zugriff auf eine Ressource zu gewährleisten, wird eine zweiphasige Verriegelung eingeführt, was bedeutet, dass Transaktionen bei der Freigabe eines separaten Schlosses keine neuen Sperren zulässig sind.
In der zweiphasigen Verriegelung für die Kontrolle der Parallelität gilt die anfängliche Phase als Wachstumsphase, in der die Transaktion ihre erforderliche Schloss erfasst. Die nächste Phase gilt als schrumpfende Phase, in der in der Transaktion ihre Schlösser freigesetzt werden. Es gibt Probleme mit dieser Art von Sperren. Wenn Transaktionen abbrechen, können andere Transaktionen Daten von Objekten verwenden, die durch abgebrochene Transaktionen geändert und freigeschaltet werden. Dies würde dazu führen, dass andere Transaktionen abgebrochen werden.