Synchronisation paralleler Transaktionen AIFB SS Sperrverfahren Sperrverfahren (13/18) Behandlung von Konflikten bei der Sperrvergabe (Kollisionsstrategie) Was passiert, wenn eine Transaktion T 1 ein Objekt sperren will, das bereits von einer anderen Transaktion T 2 unverträglich gesperrt wurde? T 1 wird in Wartezustand versetzt, d.h. T 1 wartet bis T 2 ihr Ende erreicht hat und die von T 2 gesperrten Objekte wieder freigegeben werden.
Synchronisation paralleler Transaktionen AIFB SS Sperrverfahren Sperrverfahren (14/18) Probleme: Livelock: T 1 wartet andauernd auf eine Sperre, da andere Transaktionen sie immer wieder überholen. ( „Fairness“ muss gewährleistet sein.) Deadlock/ Verklemmung: T 1 wartet auf Sperre, die T 2 hält; T 2 wartet auf Sperre, die T 3 hält;... T n wartet auf Sperre, die T 1 hält.
Synchronisation paralleler Transaktionen AIFB SS Sperrverfahren Sperrverfahren (15/18) Lösungsmöglichkeiten: Deadlocks ausschließen / Deadlocks auflösen Deadlocks können durch Preclaiming ausgeschlossen werden. Verwendung von Time-Outs: Sperren werden nach einer bestimmten Zeit entzogen, die betreffenden Transaktionen zurückgesetzt. (ermöglicht die Auflösung von eingetretenen Deadlocks) Problem Starvation: Eine Transaktion wird wiederholt in einen Deadlock einbezogen und immer wieder bei der Auflösung als Opfer ausgesucht, zurückgesetzt und neu gestartet
Synchronisation paralleler Transaktionen AIFB SS Sperrverfahren Sperrverfahren (16/18) Lock-Manager Komponente des DBMS: Setzt Sperren und gibt diese wieder frei, so dass das Zwei-Phasen-Sperrprotokoll erfüllt wird. Verhinderung von dauerndem Blockieren („Livelock“) und dauerndem Zurücksetzen („Starvation“), d.h. faire Vergabe von Sperren an Transaktionen. Verhinderung oder Entdeckung von Deadlocks ( Wartegraph)
Synchronisation paralleler Transaktionen AIFB SS Sperrverfahren Sperrverfahren (17/18) wird aufgerufen, wenn ein Objekt gesperrt werden muss: überprüft, ob Sperre vergeben werden kann, und versetzt ggf. Transaktion in Wartezustand. führt eine Sperrtabelle: - Welche Objekte sind für welche Transaktionen gesperrt? - Welche Transaktionen warten auf die Freigabe welcher gesperrter Objekte?
Synchronisation paralleler Transaktionen AIFB SS Sperrverfahren Sperrverfahren (18/18) Wartegraph (gerichteter Graph) G W = (T*, U) T* = Menge der gerade im System aktiven Transaktionen T, T’ T*: (T,T’) U T’ wartet auf die Freigabe eines Objektes durch T (in irgendeiner Sperrtabellen-Schlange des Lock-Managers) Deadlock-Prüfung Suche nach Zyklen in G W