Sperrverfahren in Datenbanken
Viele Datenbanken sind Mehrbenutzersysteme und werden von verschiedenen Benutzern oder Systemen häufig parallel genutzt. Jeder Zugriff auf die Datenbank wird durch Transaktionen gesteuert.
Diese Sperrverfahren in Datenbanken folgen dem ACID-Prinzip (atomicity, consistency, isolation, durability), wonach eine Transaktion unteilbar und von anderen Transaktionen isoliert ist, nach Abschluss der Transaktion die Daten in einem konsistenten Zustand sind und die Änderungen dauerhaft bestehen.
Dabei kommt es häufig zu Konflikten, wenn Transaktionen auf denselben Datenbankobjekten (z. B. Tabellen, Datensätzen, Schemata) durchgeführt werden.
Was ist ein Sperrverfahren?
Mit einer Sperre werden Teile einer Datenbank (z. B. Datensatz, Tabelle) für eine Transaktion „reserviert“, diese hat dadurch ggf. ein exklusives Schreib- und Leserecht. Bei einer exklusiven Schreibsperre ist es anderen Transaktionen nicht erlaubt das Objekt zu nutzen (auch nicht lesend). Besteht eine Transaktion nur aus einer Lesesperre, dürfen andere Transaktionen ebenfalls lesend auf die Datenbankobjekte zugreifen.
Sperrverfahren in Datenbanken - Aufbau und Struktur
Das Sperrverfahren basiert auf verschiedenen Sperrmodi und Mechanismen:
- Exklusive Sperre (Exclusive Lock): Wird verwendet, wenn eine Transaktion Daten verändern möchte. Solange die Sperre aktiv ist, sind andere Transaktionen ausgeschlossen.
- Gemeinsame Sperre (Shared Lock): Ermöglicht mehreren Transaktionen das gleichzeitige Lesen derselben Daten, blockiert jedoch Schreiboperationen.
- Hierarchische Sperrung: Sperren können auf unterschiedlichen Ebenen gesetzt werden, z. B. auf Tabellen-, Zeilen- oder Feld-Ebene.
- Deadlock-Vermeidung: Ein zentraler Bestandteil des Sperrverfahrens ist das Erkennen und Vermeiden von Deadlocks, bei denen sich zwei oder mehr Transaktionen gegenseitig blockieren.
Arten von Sperrverfahren
Bei der Synchronisation werden zwei Ansätze unterschieden, zum einen die verifizierenden und zum anderen die präventiven Sperrverfahren.
Die verifizierenden oder auch optimistischen Sperrverfahren nehmen zunächst an, dass es keinen Konflikt bei der Ausführung gibt und führen alle Änderungen durch. Erst beim Festschreiben (Commit) wird die Gültigkeit der Transaktion geprüft und bei Konflikten zurückgenommen (Rollback).
Die präventiven Sperrverfahren hingegen stellen vor Beginn einer Transaktion sicher, dass kein Konflikt entstehen kann. Dies wird durch das Setzen von Sperren auf Datenbankobjekte erreicht, die erst nach Beendigung der Transaktion wieder aufgehoben werden. Diese Verfahren werden auch als pessimistische Sperrverfahren bezeichnet und verwenden das sehr bekannte Zwei-Phasen-Sperrprotokoll.
Sperrverfahren in Datenbanken - Vorteile und Nachteile
Das Sperrverfahren bietet zahlreiche Vorteile, hat aber auch Schwächen. Diese Aspekte werden in den folgenden Abschnitten genauer betrachtet.
Sperrverfahren in Datenbanken - Vorteile von Sperrverfahren
Durch die Nutzung des Sperrverfahrens ergeben sich mehrere Vorteile:
- Datenkonsistenz: Transaktionen werden sequenziell ausgeführt, was die Konsistenz sicherstellt.
- Fehlervermeidung: Inkonsistenzen und Datenverluste durch parallelen Zugriff werden verhindert.
- Flexibilität: Unterschiedliche Sperrmodi erlauben eine flexible Steuerung des Zugriffs.
Sperrverfahren in Datenbanken - Nachteile von Sperrverfahren
Trotz der Vorteile gibt es einige Herausforderungen:
- Performance-Einbußen: Sperren können zu Verzögerungen führen, insbesondere bei hoher Transaktionslast.
- Deadlocks: Ohne geeignete Mechanismen können Deadlocks auftreten, die manuell oder automatisch behoben werden müssen.
- Komplexität: Die Implementierung und Verwaltung von Sperren erfordert ein hohes Maß an Planung und technischem Verständnis.
Sperrverfahren in der Praxis - Transaktionskonflikte
Das vereinfachte Beispiel zeigt einen solchen Konflikt. Nehmen wir an ein Kunde möchte Geld auf sein Konto einzahlen. Hierfür geht er an einen Automaten (Beginn T1) und fragt zunächst seinen Kontostand ab.
Kurz darauf greift eine Transaktion T2 auf das Konto des Kunden zu, um eine Lastschrift durchzuführen. Hier wird zunächst die Deckung des Kontos geprüft und kurz darauf die Abbuchung vorgenommen. In der Zeit ist der Kunde soweit, den Einzahlungsvorgang fortzusetzen. T1 wird nur kurz von T2 unterbrochen und schließt die Transaktion ab.
Währenddessen hatte T2 gewartet. Anschließend wird der Vorgang durch Setzen des Ergebnisses (neuer Kontostand) der Transaktion abgeschlossen. Wie zu sehen ist, wurde die Änderung von T1 überschrieben, da T2 die Transaktion nach T1 abgeschlossen hat.
Das Problem besteht in der gleichzeitigen Nutzung eines Datenbankobjektes (Kontostand k) und der parallelen Durchführung verschiedener Transaktionen.
Sperrverfahren in Datenbanken - Definition & Erklärung - Zusammenfassung
Im Zusammenhang mit dem Lexikoneintrag Sperrverfahren in Datenbanken sollte man sich folgende Punkte merken:
- Sperrverfahren verhindern Dateninkonsistenzen bei parallelen Transaktionen.
- Es gibt unterschiedliche Sperrmodi wie exklusive und gemeinsame Sperren.
- Trotz ihrer Vorteile können Sperrverfahren zu Deadlocks und Performance-Problemen führen.