Bisher wurden alle Sperren auf derselben Granularität erworben. Mögliche Sperrgranulate sind:
Eine Vermischung von Sperrgranulaten hätte folgende Auswirkung. Bei Anforderung einer Sperre für eine Speichereinheit, z.B. ein Segment, müssen alle darunterliegenden Seiten und Sätze auf eventuelle Sperren überprüft werden. Dies bedeutet einen immensen Suchaufwand. Auf der anderen Seite hätte die Beschränkung auf nur eine Sperrgranularität folgende Nachteile:
Die Lösung des Problems besteht im multiple granularity locking (MGL). Hierbei werden zusätzliche Intentionssperren verwendet, welche die Absicht einer weiter unten in der Hierarchie gesetzten Sperre anzeigen. Tabelle 12.13 zeigt die Kompatibilitätsmatrix. Die Sperrmodi sind:
NL | S | X | IS | IX | |
S | - | - | |||
X | - | - | - | - | |
IS | - | ||||
IX | - | - |
Tabelle 12.13: Kompatibilitätsmatrix beim Multiple-Granularity-Locking
Die Sperrung eines Datenobjekts muß so durchgeführt werden, daß erst geeignete Sperren in allen übergeordneten Knoten in der Hierarchie erworben werden:
Abbildung 12.6 zeigt eine Datenbasis-Hierarchie, in der drei Transaktionen erfolgreich Sperren erworben haben:
Nun fordern zwei weitere Transaktionen T4 (Schreiber) und T5 (Leser) Sperren an:
Bild 12.7 zeigt die Situation nach dem gerade beschriebenen Zustand. Die noch ausstehenden Sperren sind durch eine Durchstreichung gekennzeichnet. Die Transaktionen T4 und T5 sind blockiert, aber nicht verklemmt und müssen auf die Freigabe der Sperren (T2,S) und T3,X) warten.