13.3 Neue Realisierungsanforderungen

13.3.2 Kohärenzkontrolle

Jede DBVS-Instanz eines Shared-Disk-Systems führt einen DB-Puffer im lokalen Hauptspeicher, um die Anzahl von Plattenzugriffen gering zu halten. Da jeder Rechner auf die gesamte DB zugreifen kann, ist es möglich, daß Kopien derselben DB-Seiten gleichzeitig in mehreren Knoten gepuffert werden. Dies führt jedoch zu einem Invalidierungsproblem, da bei einer Seitenänderung im DB-Puffer eines Rechners Kopien der Seite in anderen Knoten einen veralteten und somit ungültigen Zustand aufweisen (Pufferinvalidierung). Im Beispiel von Abb. 13-3 verursacht die Änderung einer Seite in Rechner R3 eine Pufferinvalidierung in R1. Die ursprüngliche Seitenversion auf Externspeicher ist ebenso veraltet. Die Behandlung solcher invalidierten Seiten ist die Aufgabe der Kohärenzkontrolle, wobei sicherzustellen ist, daß jeder Transaktion die aktuellen DB-Objekte zur Verfügung gestellt werden. Dies ist wiederum mit möglichst wenig Kommunikationsaufwand und geringer Antwortzeiterhöhung zu erledigen.

Abb. 13-3: Seiteninvalidierungen in Shared-Disk-Systemen

Ähnliche Kohärenzprobleme bestehen bei Multiprozessoren auf Ebene der Hardware-Caches [St90] sowie in anderen verteilten Systemen, insbesondere in Workstation/Server-Systemen und DSM (Distributed Shared Memory)-Systemen [Ra93b]. In Shared-Nothing-Systemen stellt sich die Kohärenzproblematik nicht, da jedes DBVS i.a. nur Seiten der lokalen DB-Partition puffert, so daß es zu keiner replizierten Pufferung von Seiten kommt. Ähnlichkeiten bestehen jedoch zu replizierten Datenbanken (Kap. 9), wo auch an mehreren Knoten replizierte DB-Objekte zu warten sind. Diese Replikation ist jedoch statisch und vorgeplant sowie auf Ebene der Externspeicher, während für Shared-Disk eine dynamische Replikation auf Hauptspeicherebene vorliegt.

In SD-Systemen erfordert die Kohärenzkontrolle, invalidierte Seitenkopien in den DB-Puffern zu erkennen bzw. von vorneherein zu vermeiden. Weiterhin müssen die Änderungen im ganzen System propagiert werden, um an jedem Rechner die neuesten Objektversionen verfügbar zu machen. Der Austausch geänderter Seiten kann über die gemeinsamen Platten erfolgen, indem zunächst ein Ausschreiben in die physische DB erfolgt, von wo dann andere Rechner die aktuelle Version einer Seite lesen. Wesentlich schneller ist allerdings der direkte Austausch geänderter Seiten über das Kommunikationsnetz, wenngleich dabei die physische DB auf dem veralteten Stand bleibt.

Die replizierte Speicherung von DB-Seiten in mehreren Puffern unterstützt das Lastbalancierungspotential von SD, da somit dieselben Objekte in verschiedenen Knoten parallel bearbeitet werden können. Andererseits ergibt sich damit systemweit betrachtet i.d.R. eine Verringerung der Trefferraten gegenüber zentralisierten DBS bzw. Shared-Nothing-Systemen. Denn dort wird eine Seite nur einmal gepuffert, so daß bei gleicher Gesamt-Hauptspeichergröße insgesamt mehr unterschiedliche Seiten gepuffert werden können. Pufferinvalidierungen führen zu einer weiteren Verschlechterung des E/A-Verhaltens, da veraltete Kopien nicht wiederverwendet werden können. Die Anzahl von Pufferinvalidierungen steigt sowohl mit der Änderungsrate, der Puffergröße sowie der Rechneranzahl (da N-1 von N Rechnern Invalidierungen verursachen können). Letztere Abhängigkeit kann für änderungsintensive Lasten zu einer beeinträchtigten Skalierbarkeit von Shared-Disk-Systemen führen. Dies gilt jedoch primär für einfache Lastverteilungsansätze, die das Referenzverhalten nicht berücksichtigen, so daß sich die Zugriffe auf bestimmte DB-Bereiche gleichermaßen über alle N Rechnern verteilen (s.u.).

Die wichtigsten Ansätze zur Kohärenzkontrolle in Shared-Disk-Systemen werden in Kap. 15 behandelt.