🏠 » Lexikon » S » Sperrverfahren in Datenbanken

Sperrverfahren in Datenbanken

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 der Praxis

Transaktionskonflikte bei Sperrverfahren | Datenbank LexikonDas 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 und beendet anschließend den Vorgang, indem das Ergebnis (neuer Kontostand) der Transaktion festgeschrieben wird. Wie zu erkennen ist, wurde die Änderung von T1 überschrieben, da T2 die Transaktion nach T1 beendet hat.

Das Problem besteht in der gleichzeitigen Nutzung eines Datenbankobjektes (Kontostand k) und der parallelen Durchführung verschiedener Transaktionen.

Transaktionsmanagement zur Synchronisation

Das Transaktionsmanagement einer Datenbank überwacht und steuert die Einhaltung des ACID Prinzips bei der Ausführung von Transaktionsvorgängen. Da Transaktionen parallel und serialisiert zur Ausführung kommen können,  gibt es unterschiedliche Ansätze zur Beherrschung von Konflikten.

Ein paralleler Zugriff auf identische Datenbankobjekte ist immer dann kritisch, wenn die Transaktionen eine Schreiboperation (sprich eine Änderung) durchführen möchten. Hier muss der Transaktionsmanager vor dem festschreiben (Commit) der Änderung gewährleisten, dass die Datenbank anschließend weiterhin in einem konsistenten Zustand ist.

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.