19.2 Oracle
19.2.2 Oracle Parallel Server
Die Unterstützung von Shared-Disk-Konfigurationen durch Oracle Parallel Server (OPS) [Or93] begann in Version 6.2 von Oracle. OPS war zunächst auf Vax-Cluster-Systemen lauffähig, allerdings mit relativ geringer Leistungsfähigkeit. Mittlerweile wurde OPS auf eine ganze Reihe von Plattformen portiert, insbesondere mehrere Cluster-Architekturen (Sequent, Encore, Pyramid etc.) und Parallelrechner (nCUBE, Meiko, KSR, etc.). Großes Aufsehen erzielte 1991 ein TPC-B-Benchmark auf einer nCUBE2-Konfiguration mit 64 Rechnern, in dem über 1000 Transaktionen pro Sekunde zu sehr geringen Kosten erzielt wurden. Dies war zu diesem Zeitpunkt ein absolutes Spitzenergebnis, das erst zwei Jahre später übertroffen wurde. OPS erlaubte zunächst nur Inter-Transaktionsparallelität; seit Oracle V7.1 wird für lesende SQL-Anweisungen auch eine erste Unterstützung von Intra-Query-Parallelität geboten [Li93].
Abb. 19-3: Oracle Parallel Server auf einem Parallelrechner
Die prinzipielle Struktur von OPS auf einem Parallelrechner ist in Abb. 19-3 gezeigt. Das Oracle-DBVS läuft dabei auf einer Reihe von Rechnerknoten. Zur Synchronisation wird ein verteiltes Sperrprotokoll (Distributed Lock Manager) auf dedizierten Rechnern verwendet (Kap. 14.1), wobei die Sperrzuständigkeit über eine Hash-Funktion unter den Knoten aufgeteilt ist. Der Hauptspeicher verbleibender Rechnerknoten kann optional als "Gigacache" genutzt werden, um DB-Seiten zwischenzupuffern. Die gepufferten Seiten können dann über das Verbindungsnetzwerk des Parallelrechners wesentlich schneller von diesem Cache als von Externspeicher angefordert werden. Die Kohärenzkontrolle bezüglich dieser Caches sowie der Puffer der Verarbeitungsrechner basiert auf dem Konzept der Haltesperren (Kap. 15.4). Zur Propagierung von Änderungen wird ein Noforce-Ansatz ("fast commit") mit Seitenaustausch über Externspeicher verfolgt. Ungeänderte Seiten werden jedoch auch direkt zwischen den Rechnern transferiert, um das E/A-Verhalten zu optimieren. Zur Reduzierung von Sperrkonflikten werden sowohl Satzsperren als auch ein Mehrversionen-Ansatz unterstützt, bei dem Lesetransaktionen auf veraltete Seiten zugreifen können.