8 Synchronisation in Verteilten Datenbanksystemen

8.5 Deadlock-Behandlung

Eine mit Sperrverfahren einhergehende Interferenz ist die Gefahr von Verklemmungen oder Deadlocks, deren charakterisierende Eigenschaft eine zyklische Wartebeziehung zwischen zwei oder mehr Transaktionen ist. Im verteilten Fall können diese Verklemmungen zwischen Transaktionen verschiedener Rechner auftreten, so daß es zu sogenannten globalen Deadlocks kommt.

Beispiel 8-11

In einer Bankanwendung kann es zu einem globalen Deadlock zwischen zwei Überweisungstransaktionen kommen, die auf dieselben Konten K1 (an Rechner R1) und K2 (an Rechner R2) zugreifen wollen (Abb. 8-8). Dabei beabsichtigt die in R1 gestartete Transaktion T1 eine Überweisung von K1 nach K2, die Transaktion T2 in R2 eine Überweisung von K2 nach K1. T1 erwirbt zunächst eine Schreibsperre auf K1 und führt die Kontoänderung durch, danach startet sie eine Sub-Transaktion in R2, um auf K2 zuzugreifen. Die entsprechende Sperranforderung führt jedoch zu einem Konflikt, da T2 bereits eine Schreibsperre auf K2 erworben hat. T2 hat unterdessen eine Sub-Transaktion in R1 gestartet, um Konto K1 zu ändern; diese Sub-Transaktion gerät jedoch in einen Konflikt mit T1. Beide Transaktionen blockieren sich nunmehr gegenseitig; die Situation kann nur durch Rücksetzung einer der Transaktionen behoben werden.

Abb. 8-8: Beispiel eines globalen Deadlocks


Zur Deadlock-Behandlung in zentralisierten sowie in Verteilten DBS kommen einige generelle Strategien in Betracht: Verhütung, Vermeidung, Timeout, Erkennung sowie hybride Strategien. Diese Alternativen werden im folgenden näher diskutiert. Besonderheiten für Verteilte DBS ergeben sich dabei vor allem bezüglich der Deadlock-Erkennung.

8.5.1 - Deadlock-Verhütung
8.5.2 - Deadlock-Vermeidung
8.5.3 - Timeout-Verfahren
8.5.4 - Deadlock-Erkennung
8.5.5 - Hybride Strategien