13.3 Neue Realisierungsanforderungen

13.3.1 Globale Synchronisation

Die Synchronisation der Rechner beim Zugriff auf die gemeinsame Datenbank ist bei SD eine offenkundige Notwendigkeit, um die globale Serialisierbarkeit (Kap. 8) der bearbeiteten Transaktionen sicherstellen zu können. Da wegen der losen Rechnerkopplung die Synchronisation nur durch Nachrichtenaustausch zwischen den Rechnern möglich ist, ergibt sich ein weitaus höherer Synchronisationsaufwand als in zentralisierten Systemen, wo alle benötigten Datenstrukturen im Hauptspeicher erreichbar sind. In Verteilten DBS bzw. Shared-Nothing-Systemen kann die Synchronisation bei verteilten Protokollen ohne zusätzliche Kommunikation erfolgen, wenn jeder Rechner die Zugriffe auf seine Datenpartition lokal synchronisiert (Kap. 8.1.2). Höchstens zur Erkennung globaler Deadlocks fallen dabei eigene Nachrichten an.

Selbst bei einem sehr schnellen Kommunikationssystem ist z.B. das Anfordern einer Sperre bei einem anderen Rechner um Größenordnungen langsamer als eine lokale Sperrbearbeitung. Denn allein das Senden und Empfangen der dazu notwendigen Nachrichten verursacht eine weitaus höhere CPU-Belastung, da diese Operationen meist Tausende von Instruktionen erfordern. Dazu kommen i.a. noch Prozeßwechselkosten, da die Verzögerungen für die Transaktion zu lang sind, um während der Wartezeit auf eine Antwort im Besitz des Prozessors zu bleiben. Für die Leistungsfähigkeit besonders kritisch sind synchrone Nachrichten, für die eine Transaktion bis zum Eintreffen einer Antwortnachricht unterbrochen werden muß. Denn diese verursachen nicht nur Durchsatzeinbußen (Kommunikations-Overhead), sondern erhöhen direkt die Antwortzeiten. Verlängerte Antwortzeiten wiederum bewirken eine Zunahme an Synchronisationskonflikten, da z.B. Sperren länger gehalten werden, was zur Erhöhung der Konfliktwahrscheinlichkeit sowie der mittleren Wartezeit auf gehaltene Sperren führt. Ein Hauptziel effizienter Synchronisationsprotokolle für Shared-Disk ist daher, das Ausmaß synchroner Nachrichten zu minimieren. Wie wir sehen werden, ist hierzu auch eine enge Abstimmung mit der Kohärenzkontrolle sowie der Lastverteilung erforderlich.

Ein leistungsfähiges Synchronisationsprotokoll muß generell mit möglichst wenig Blockierungen und Rücksetzungen von Transaktionen auskommen. Dies kann durch eine Vielzahl von Maßnahmen unterstützt werden, wie Verwendung feiner Synchronisationsgranulate (z.B. Satzsperren), Sonderbehandlung für Verwaltungsdaten oder andere Hot-Spot-Objekte, Mehrversionen-Verfahren oder reduzierte Konsistenzzusicherungen [Ra88b]. Diese Ansätze sind jedoch für Shared-Disk aufgrund von Wechselwirkungen mit der Kohärenzkontrolle zum Teil erheblich schwieriger zu realisieren als in zentralisierten DBS oder Shared-Nothing-Systemen. So kann es bei Verwendung von Satzsperren vorkommen, daß eine Seite parallel in verschiedenen Rechnern geändert wird. Dies führt jedoch dazu, daß keiner der Rechner nach seiner Änderung die aktuelle Version der Seite besitzt und die Gefahr besteht, daß die Änderungsstände von Kopien einer Seite immer weiter auseinanderlaufen.

Eine weitere Anforderung an ein geeignetes Synchronisationsprotokoll für Shared-Disk ist Robustheit gegenüber Fehlern im System. Insbesondere muß nach Rechnerausfällen eine korrekte Fortsetzung der Synchronisation gewährleistet sein, um eine hohe Verfügbarkeit zu erreichen.

In Kap. 14 werden wir ausführlich auf die Realisierung von Synchronisationsverfahren für Shared-Disk eingehen.