🏠 » Lexikon » D » Deadlock

Deadlock

Deadlocks

, auch Verklemmungen genannt,  können in transaktionalen Datenbanksystemen entstehen. Sie sind jedoch kein reines Phänomen im Bereich von Datenbanksystemen, sondern ein generelles Problem in der Informatik (bspw. Philosophenproblem).

Sie verursachen einen Stillstand in der Verarbeitung von mindestens zwei gegenseitig abhängigen Prozessen bzw. Transaktionen. Die Abhängigkeit entsteht dadurch, dass die Transaktionen auf eine Freigabe exklusiv gesperrter Datenobjekte warten.

Ein Deadlock muss durch einen übergeordneten Prozess aufgelöst werden, da die einzelnen beteiligten Transaktionen nicht mehr handlungsfähig sind.

Wie entstehen Deadlocks in Datenbanken?

Zu einem Deadlock kommt es, wenn Prozesse in der Datenbank auf die gleiche Ressource (z. B. einen Datensatz oder eine Tabelle) zugreifen möchten, um eine Änderung durchzuführen. Bei ausschließlich lesendem Zugriff, wird dieser je nach System gewährt oder nicht.

Deadlocks in Datenbanken auf Datenbanken-verstehen.de

Die beiden Transaktionen T1 und T2 in der Abbildung greifen zur gleichen Zeit auf unterschiedliche Datenobjekte zu und belegen diese mit einer exklusiven Sperre. Während der Verarbeitung werden zusätzliche Datenobjekte benötigt.

Diese sind jedoch von der jeweils anderen Transaktion in Verwendung und daher für jede andere Transaktion gesperrt. Da die Objekte nicht zugreifbar sind, warten die Transaktionen solange, bis das angeforderte Objekt wieder entsperrt und damit freigegeben wird. Die Transaktionen wissen nicht, dass ein anderer Prozess Zugriff auf ein gesperrtes Datenobjekt benötigt.

Dieser Deadlock kann von den Transaktionen selbst nicht aufgelöst werden. Ein übergeordnetes System muss die Situation beenden.

Präventionen gegen Deadlocks in Datenbanksystemen

Es gibt Maßnahmen auf unterschiedlichen Ebenen, die ein Deadlock verhindern oder schnellstmöglich wieder auflösen. Dies geschieht durch übergeordnete Prozesse oder Systeme.

Verhindern von Deadlocks

Deadlocks können verhindert werden, indem einer Transaktion bspw. die gesperrten Objekte weggenommen und einer anderen zugeteilt werden (Preemption). Wird im System auf exklusive Sperren verzichtet, können alle Prozesse die Ressourcen gleichzeitig nutzen. Hier muss die Transaktion zusätzlich auf Datenkonsistenz überprüft werden.

Eine weitere Variante ist die Anordnung der Ausführungsreihenfolge von Transaktionen, abhängig von den benötigten Datenobjekten. Eine parallele Ausführung findet nur statt, wenn die Transaktionen keine gemeinsamen Datenobjekte nutzen. Bei diesem Vorgehen werden vor Transaktionsausführung alle genutzten Objekte benötigt.

Auflösen von Deadlocks

Eine Möglichkeit der Auflösung eines Deadlocks, ist der Abbruch einer oder aller beteiligter Transaktionen. Dies kann zu Datenverlusten oder Inkonsistenzen führen, wenn keine Maßnahmen zur Änderungsrücknahme (Rollback) im System implementiert sind. Bei den heute gängigen Datenbanksystemen kann man diesen Mechanismus als gegeben ansehen. Mittels Rollback werden die bisherigen Änderungen an den Datenobjekten  zurückgenommen.