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.

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.
Deadlock-Mechanismen in Datenbanken - Vorteile und Nachteile
Ein Deadlock an sich ist ein Problem, aber die Mechanismen zu seiner Vermeidung oder Behandlung haben sowohl Vorteile als auch Nachteile.
Deadlock in Datenbanken - Vorteile von Deadlock-Mechanismen
Die Einführung von Deadlock-Erkennungs- und Vermeidungsmechanismen bietet:
- Datenintegrität: Durch Vermeidung von Konflikten bleibt die Konsistenz der Datenbank erhalten.
- Stabilität des Systems: Prozesse werden kontrolliert, um Ressourcen blockierungsfrei zu verteilen.
- Erhöhte Effizienz: Optimierte Algorithmen reduzieren Systemausfälle und Wartezeiten.
Deadlock in Datenbanken - Nachteile von Deadlock-Mechanismen
Dennoch gibt es auch Herausforderungen:
- Leistungsüberhead: Die Überwachung und Verwaltung von Deadlocks verbraucht zusätzliche Rechenressourcen.
- Komplexität: Die Implementierung von Deadlock-Mechanismen erfordert sorgfältige Planung und Fachwissen.
- Zeitaufwand: Deadlock-Erkennung kann dazu führen, dass Prozesse länger auf Ressourcen warten.
Deadlock - Definition & Erklärung - Zusammenfassung
Im Zusammenhang mit dem Lexikoneintrag Deadlock sollte man sich folgende Punkte merken:
- Ein Deadlock tritt auf, wenn mehrere Prozesse auf Ressourcen warten, die gegenseitig blockiert sind.
- Mechanismen, wie Deadlock-Erkennung und -Vermeidung sind notwendig, bringen jedoch zusätzlichen Aufwand.
- Ein Deadlock kann die Performance und Konsistenz von Datenbanken erheblich beeinträchtigen, erfordert jedoch durchdachte Strategien zur Vermeidung.