DB2 Universal Database - Systemverwaltung


Vorablesen von Daten in den Pufferpool

Durch das Vorablesen von Index- und Datenseiten in den Pufferpool kann die Leistung verbessert werden, da die Zeit, die auf die Ausführung der Ein-/Ausgabeoperationen gewartet werden muß, verringert wird. Vorablesen bedeutet, daß eine oder mehrere Seiten von der Platte abgerufen werden, wenn ihre Verwendung wahrscheinlich erscheint. Es gibt zwei Arten des Vorablesezugriffs:

Diese beiden Methoden zum Lesen von Datenseiten erfolgen zusätzlich zum normalen Lesen. Normale Lesevorgänge werden verwendet, wenn nur eine oder wenige aufeinanderfolgende Seiten abgerufen werden. Bei einem normalen Lesevorgang wird jeweils nur eine Seite von Daten übertragen.

Weitere Informationen zur Aktivierung des Vorablesezugriffs finden Sie in Konfigurieren von E/A-Servern für Vorablesezugriff und parallele E/A.

Sequentieller Vorablesezugriff

Durch das Lesen mehrerer aufeinanderfolgender Seiten in den Pufferpool in einer einzigen E/A-Operation kann der Systemaufwand, der mit der Ausführung der Anwendung verbunden ist, wesentlich reduziert werden. Darüber hinaus kann durch paralleles Ausführen mehrerer E/A-Operationen zum gleichzeitigen Lesen verschiedener Bereiche der Seiten die Zeit verringert werden, die Anwendungen auf die Beendigung von E/A-Operationen warten müssen.

Der Vorablesezugriff wird gestartet, wenn der Datenbankmanager bestimmt, daß sequentielle E/A-Operationen zweckmäßig sind und daß durch den Vorablesezugriff die Leistung verbessert werden könnte. In solchen Fällen wie Tabellensuchen und Sortierungen in Tabellen kann der Datenbankmanager leicht feststellen, daß durch den sequentiellen Vorablesezugriff die E/A-Leistung verbessert wird. In diesen Fällen startet der Datenbankmanager den sequentiellen Vorablesezugriff automatisch. Das folgende Beispiel zeigt eine Abfrage, die eine Tabellensuche erforderlich macht und für die deshalb der sequentielle Vorablesezugriff die naheliegende Methode wäre:

   SELECT NAME FROM EMPLOYEE

Die Anzahl der Seiten, die vom Datenbankmanager vorab gelesen werden, kann für jeden Tabellenbereich mit Hilfe der Klausel PREFETCHSIZE in der Anweisung CREATE TABLESPACE bzw. ALTER TABLESPACE definiert werden. Der definierte Wert wird in der Spalte PREFETCHSIZE der Systemkatalogtabelle SYSCAT.TABLESPACES gespeichert.

Es empfiehlt sich, den Wert für PREFETCHSIZE als ein Vielfaches des Werts für EXTENTSIZE für Ihren Tabellenbereich und die Anzahl der zugehörigen Tabellenbereichsbehälter explizit zu definieren. (Der Wert für EXTENTSIZE definiert die Anzahl von Seiten, die der Datenbankmanager in einen Behälter schreibt, bevor er zu einem anderen Behälter wechselt. Siehe "Entwerfen und Auswählen von Tabellenbereichen" im Handbuch Systemverwaltung: Konzept.) Ist zum Beispiel für EXTENTSIZE ein Wert von 16 Seiten festgelegt und hat der Tabellenbereich zwei Behälter, könnte der Wert für die Menge der vorab gelesenen Datenseiten (PREFETCHSIZE) auf den Wert 32 gesetzt werden.

Der Datenbankmanager überwacht die Verwendung des Pufferpools, um sicherzustellen, daß durch den Vorablesezugriff auf Daten keine Seiten aus dem Pufferpool entfernt werden, wenn diese Seiten noch von einer anderen Arbeitseinheit verwendet werden. Zur Vermeidung von Problemen begrenzt der Datenbankmanager die Anzahl der vorab gelesenen Seiten möglicherweise auf einen Wert, der kleiner ist als die für den Tabellenbereich angegebene Menge.

Die Einstellung für PREFETCHSIZE kann erhebliche Auswirkungen auf die Leistung besonders bei Suchoperationen in großen Tabellen haben. Mit Unterstützung durch den Datenbanksystemmonitor und andere Systemüberwachungsprogramme kann die Einstellung von PREFETCHSIZE für die Tabellenbereiche optimiert werden. Zum Beispiel können folgende Arten von Informationen gesammelt werden:

Wenn E/A-Wartezeiten auftreten und für die Abfrage der Vorablesezugriff aktiv ist, können Sie versuchen, durch Erhöhen des Werts für PREFETCHSIZE eine Leistungssteigerung zu erzielen. Es ist möglich, daß die E/A-Wartezeiten nicht durch den Vorablesezugriff verursacht werden. In diesem Fall wird durch Erhöhen des Werts für PREFETCHSIZE keine Verbesserung für die Abfrage erreicht.

Bei allen Arten des Vorablesezugriffs können mehrere E/A-Operationen parallel ausgeführt werden, wenn für PREFETCHSIZE ein Vielfaches des Werts für EXTENTSIZE für den Tabellenbereich angegeben ist und sich die durch EXTENTSIZE definierten Bereiche des Tabellenbereichs in separaten Behältern befinden. Für eine optimale Leistung sollten die Behälter so konfiguriert werden, daß sie verschiedene physische Einheiten verwenden. Weitere Informationen zum parallelen Vorablesezugriff finden Sie in Konfigurieren von E/A-Servern für Vorablesezugriff und parallele E/A.

Sequenzerkennung

Es gibt Fälle, in denen es nicht von vornherein offensichtlich ist, ob durch einen sequentiellen Vorablesezugriff eine Leistungsverbesserung erreicht werden kann. In diesen Fällen kann der Datenbankmanager die E/A-Operationen überwachen und, wenn sequentielles Lesen von Seiten auftritt, den Vorablesezugriff aktivieren. Der Vorablesezugriff kann in diesem Fall vom Datenbankmanager aktiviert und inaktiviert werden, je nachdem ob er zweckmäßig erscheint oder nicht. Diese Art des sequentiellen Vorablesens ist die Sequenzerkennung, die für Index- und Datenseiten angewandt wird. Mit Hilfe des Konfigurationsparameters seqdetect (siehe Markierung für Sequenzerkennung (seqdetect)) können Sie steuern, ob der Datenbankmanager die Sequenzerkennung durchführen soll. Wenn die Sequenzerkennung aktiviert ist, könnte mit ihrer Hilfe festgestellt werden, daß für die folgende SQL-Anweisung ein sequentieller Vorablesezugriff von Vorteil wäre:

   SELECT NAME FROM EMPLOYEE
   WHERE EMPNO BETWEEN 100 AND 3000

In diesem Beispiel hat das Optimierungsprogramm vielleicht entschieden, die Tabelle mit Hilfe eines Index für die Spalte EMPNO zu durchsuchen. Wenn die Tabelle eine hohe Clusterbildung in bezug auf diesen Index aufweist, dann sind die Leseoperationen für die Datenseiten beinahe sequentiell, so daß ein Vorablesezugriff zu einer Leistungsverbesserung führen würde. In diesem Fall würde ein Vorablesezugriff auf die Datenseiten durchgeführt.

In diesem Beispiel könnte auch ein Vorablesezugriff auf Indexseiten auftreten. Wenn eine große Anzahl von Indexseiten durchsucht werden muß und der Datenbankmanager feststellt, daß ein Lesen sequentieller Seiten der Indexseiten auftritt, wird ein Vorablesezugriff auf die Indexseiten durchgeführt.

Vorablesezugriff über Listen

Der Vorablesezugriff über Listen oder sequentielle Vorablesezugriff über Listen ist eine effiziente Methode, auf Daten zuzugreifen, auch wenn die benötigten Datenseiten nicht in aufeinanderfolgender Reihenfolge vorliegen. Der Vorablesezugriff über Listen kann in Verbindung mit dem Zugriff über einen oder mehrere Indizes verwendet werden.

Vorablesezugriff und partitionsinterne Parallelität

Das Vorablesen ist ein sehr wesentlicher Gesichtspunkt im Hinblick auf die Leistung der partitionsinternen Parallelität, bei der mehrere Subagenten beim Durchsuchen eines Index oder einer Tabelle verwendet werden. Diese parallelen Suchoperationen können zu größerem Datenverarbeitungsdurchsatz führen, wodurch höhere Vorablesegeschwindigkeiten erforderlich werden.

Der Nachteil durch ungeeignetes Vorablesen ist bei parallelen Suchoperationen höher als bei seriellen Suchoperationen. Wenn bei der Ausführung einer seriellen Suchoperation kein Vorablesezugriff stattfindet, arbeit die Abfrage langsamer, weil der Agent immer auf E/A-Operationen warten muß. Wenn bei der Ausführung einer parallelen Suchoperation kein Vorablesezugriff stattfindet, müssen eventuell alle Subagenten auf einen Subagenten warten, der auf eine E/A-Operation wartet.

Aufgrund seiner Bedeutung wird der Vorablesezugriff bei partitionsinterner Parallelität intensiver durchgeführt. Die Funktion zur Sequenzerkennung toleriert größere Lücken zwischen benachbarten Seiten, so daß die Seiten als sequentiell betrachtet werden können. Die Breite dieser Lücken erhöht sich mit der Anzahl der an der Suchoperation beteiligten Subagenten.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]