14.2 Techniken zur Einsparung globaler Sperranforderungen
14.2.2 Hierarchische Sperren und Autorisierungen
Die Leistungsfähigkeit eines Sperrprotokolls ist generell stark vom jeweiligen Sperrgranulat abhängig. Ein feines Granulat (z.B. Satzsperren) erlaubt eine geringe Anzahl von Konflikten zwischen Transaktionen und damit eine hohe Parallelität. Auf der anderen Seite entsteht damit ein hoher Verwaltungsaufwand, da sehr viele Objekte zu sperren und eine große Anzahl von Sperreinträgen zu verwalten sind. Grobe Sperrgranulate (z.B. Satztypen) weisen die umgekehrten Eigenschaften auf. Um diese Gegensätze zu überbrücken, werden üblicherweise hierarchische Sperrverfahren eingesetzt, die zwei oder mehr Objektgranularitäten unterstützen [GR93]. Damit können für lange Transaktionen, die sehr viele Sperren anfassen, grobe und für kurze Transaktionen feine Sperrgranulate verwendet werden. Um eine Verträglichkeit beider Ansätze zu gewährleisten, müssen beim Sperren feiner Granulate die zugehörigen gröberen Granulate mit sogenannten Anwartschaftssperren (intention locks) belegt werden. Diese Anwartschaftssperren zeigen an, daß die Transaktion auf einer tieferen Ebene der Objekthierarchie explizite Sperren gesetzt hat. Die Anwartschaftssperren verhindern daneben, daß auf den gröberen Granulaten (höheren Ebene der Sperrhierarchie) Sperren gewährt werden, die mit denen auf den feinen Granulaten nicht verträglich sind.
Für Shared-Disk ist die Unterstützung eines hierarchischen Sperrprotokolls von besonderer Bedeutung. Denn die reduzierte Sperranzahl bei Verwendung grober Sperrgranulate bedeutet auch eine entsprechende Verbesserung in der Anzahl globaler Sperranforderungen. Weitere Kommunikationseinsparungen sind möglich durch Anwendung der Lese- und Schreibautorisierungen auf mehreren Ebenen der Objekthierarchie. Hält z.B. ein Rechner eine Schreibautorisierung (Leseautorisierung) auf einem Satztyp, so gilt diese implizit für alle Seiten und Sätze dieses Satztyps, so daß für sie eine lokale Synchronisation möglich wird. Da diese Autorisierungen für alle Transaktionen eines Rechners gelten, ergeben sich weitergehende Einsparungen als mit hierarchischen Sperren. Denn bei diesen kommt die Verwendung grober Sperrgranulate nur jeweils einer Transaktion zugute.
Damit die mit groben Sperrgranulaten möglichen Kommunikationseinsparungen nicht zu Lasten zahlreicher Sperrkonflikte gehen, empfiehlt sich die dynamische Wahl des Sperrgranulats in Abhängigkeit der Konfliktlage [Jo91]. Bei mehreren hierarchisch geordneten Objektgranularitäten wird eine Sperre stets auf der höchsten Ebene angefordert, für die dies ohne Konflikt möglich ist. Wird etwa eine Satztypsperre auf diese Weise erworben, sind alle Objekte der darunterliegenden Ebenen implizit gesperrt und ohne Kommunikation referenzierbar. Tritt danach ein Konflikt für das grobe Sperrgranulat ein, wird für den Sperrbesitzer eine Verfeinerung seines Sperrgranulates (De-Eskalierung) vorgenommen, bis kein Konflikt mehr vorliegt oder das feinste Granulat erreicht wird (z.B. Satzsperren). Voraussetzung dafür ist, daß auch nach Erwerb einer Sperre für ein grobes Granulat alle folgenden Referenzen auf den feineren Granulaten in der lokalen Sperrtabelle aufgezeichnet werden. Damit wird also der lokale Wartungsaufwand gegenüber einem Sperransatz auf dem feinsten Sperrgranulat nicht reduziert, jedoch können globale Sperranforderungen eingespart werden.
Beispiel 14-2
- Im Szenario von Abb. 14-5a hält Transaktion T1 zunächst eine explizite Sperre auf dem ganzen Satztyp, womit sämtliche Seiten und Sätze des Satztyps implizit gesperrt sind. Der zuständige LLM vermerkt, daß T1 die Sätze r2 und r3 referenziert hat, obwohl für sie keine explizite Sperranforderung notwendig ist. Wenn eine andere Transaktion T2 den Satz r1 bearbeiten will, beginnt sie mit ihrer Sperranforderung auf der Satztypebene, wo ein Konflikt erkannt wird. Dies veranlaßt die De-Eskalierung für T1, womit die in Abb. 14-5b gezeigte Situation entsteht. Die Satzsperre für r1 konnte an T2 gewährt werden, da die Satzzugriffe von T1 damit nicht kollidieren. T1 hält nun explizite Sperren auf der Satz- und Seitenebene sowie Anwartschaftssperren auf den höheren Ebenen. Das Beispiel verdeutlicht, daß der Ansatz die gleiche Parallelität wie mit Satzsperren ermöglicht. Dennoch lassen sich zahlreiche Nachrichten einsparen, solange keine Konflikte auftreten.
Abb. 14-5: Hierarchisches Sperren mit De-Eskalierung
Der vorgestellte Ansatz kann in analoger Weise für Lese- und Schreibautorisierungen genutzt werden. Jedoch wird eine De-Eskalierung von Autorisierungen nur für globale Konflikte erforderlich. Für Transaktionssperren auf groben Granulaten erfolgt dagegen bereits eine De-Eskalierung für einen lokalen Sperrkonflikt, wodurch für die betroffenen Objekte keine weiteren Nachrichteneinsparungen mehr möglich sind.
Beispiel 14-3
- Wenn im Szenario von Abb. 14-3 der Konflikt mit der Schreibautorisierung auf O1 nicht auf der feinsten Objektebene stattfindet, kann der GLM eine De-Eskalierung für O1 verlangen. LLM2 gibt daraufhin die Schreibautorisierung für O1 zurück, behält jedoch alle Schreibautorisierungen für alle in O1 enthaltenen Objekte, die in Rechner R2 zwischenzeitlich referenziert wurden und für die kein Konflikt mit der Transaktion besteht, welche die De-Eskalierung ausgelöst hat.