Release-Informationen


|10.2 Kapitel 8. Leistung bei der Ausführung

|10.2.1 Blockbasierter Pufferpool

| | | | |

|Diese Funktion wird nur in der Sun Solaris-Betriebsumgebung |unterstützt.

|Aufgrund von E/A-Systemaufwand ist das Bereitstellen von Seiten von |Platte aufwendig. Die DB2-Bereitstellungsfunktion verbessert den |Durchsatz erheblich, wenn die Verarbeitung mit E/A überlappt werden |kann. Die meisten Plattformen bieten leistungsfähige Basiselemente zum |Lesen zusammenhängender Seiten von Platte in nicht zusammenhängende |Speicherbereiche. Diese Basiselemente werden in der Regel als |"gestreutes Lesen" oder "über Vektor gesteuerte E/A" |bezeichnet. Auf einigen Plattformen kann sich die Leistung dieser |Basiselemente nicht mit der Leistung von E/A in großen Blockgrößen |messen. Standardmäßig sind die Pufferpools seitenbasiert. |D. h., zusammenhängende Seiten auf Platte werden in nicht |zusammenhängende Seiten im Speicher bereitgestellt. Die |Bereitstellungsleistung kann auf diesen Plattformen noch weiter verbessert |werden, wenn Seiten von Platte in zusammenhängende Seiten in einem Pufferpool |gelesen werden können. Mit der Registrierdatenbankvariablen |DB2_BLOCK_BASED_BP können Sie einen Bereich im Pufferpool erstellen, der Sätze |zusammenhängender Seiten enthält. Diese Sätze zusammenhängender Seiten |werden als "Blöcke" bezeichnet. Durch das Setzen dieser |Registrierdatenbankvariablen liest eine sequenzielle Bereitstellung die Seiten |von Platte direkt in diese Blöcke, statt jede Seite einzeln zu lesen. |Dadurch wird die /A-Leistung verbessert. Weitere Informationen zu |dieser Registrierdatenbankvariablen finden Sie im Abschnitt zu den |Registrierungs- und Umgebungsvariablen des Handbuchs Systemverwaltung. |

|Mehrere Tabellenbereiche unterschiedlicher Speicherbereichsgrößen können an |einen Pufferpool derselben Blockgröße gebunden werden. Es besteht eine |enge Beziehung zwischen Speicherbereichsgrößen und Blockgrößen, obwohl es sich |dabei um unterschiedliche Konzepte handelt. Ein Speicherbereich ist die |Granularität, mit der Tabellenbereiche einheitenübergreifend in mehreren |Behältern gespeichert werden. Ein Block ist die einzige Granularität, |bei der E/A-Server, die sequenzielle Bereitstellungsanforderungen |abarbeiten, blockbasierte E/A in Betracht ziehen.

|Einzelne sequenzielle Bereitstellungsanforderungen verwenden Seiten in |Speicherbereichsgröße. Wenn eine solche Bereitstellungsanforderung |empfangen wird, ermittelt der E/A-Server den Aufwand und die Vorteile |der Abarbeitung jeder Anforderung bei blockbasierter E/A (wenn ein |blockbasierter Bereich im Pufferpool vorhanden ist) im Vergleich zur |seitenbasierten E/A mit gestreutem Lesen. Der Vorteil von |blockbasierter E/A ist der Leistungsvorteil durch das Lesen von |zusammenhängenden Platten in zusammenhängenden Speicher. Der Aufwand |ist die Größe des verschwendeten Pufferpoolspeichers, der sich bei dieser |Methode ergeben kann.

|Die Verschwendung von Pufferpoolspeicher kann bei blockbasierter E/A |zwei Ursachen haben: |

|Anmerkung:
Die einzelnen Blöcke im blockbasierten Bereich eines Pufferpools können nicht |weiter unterteilt werden. Die Seiten im Block müssen alle |zusammenhängen. Daher wird unter Umständen Platz verschwendet. |

|Der E/A-Server erlaubt einige verschwendete Seiten in jedem Block, um |die Vorteile der blockbasierten E/A nutzen zu können. Wenn jedoch |ein zu großer Teil eines Blocks verschwendet wird, kehrt der E/A-Server |zur seitenbasierten Bereitstellung in den Seitenbereich des Pufferpools |zurück. Ein Teil der E/A bei der Bereitstellung ist daher nicht |blockbasiert. Dies ist keine optimale Rahmenbedingung.

|Für eine optimale Leistung sollten Sie Tabellenbereiche der gleichen |Speicherbereichsgröße haben, die an einen Pufferpool derselben Blockgröße |gebunden sind. Eine gute Leistung kann auch noch erreicht werden, wenn |die Speicherbereichsgröße einiger Tabellen die Blockgröße des Pufferpools |übersteigt, an den sie gebunden sind. Es empfiehlt sich nicht, |Tabellenbereiche an einen Pufferpool zu binden, wenn die Speicherbereichsgröße |geringer als die Blockgröße ist.

|Anmerkung:
Der Blockbereich eines Pufferpools wird nur für sequenzielle Bereitstellung |verwendet. Wenn wenig oder keine sequenzielle Bereitstellung auf Ihrem |System auftritt, ist der Blockbereich ein verschwendeter Teil des |Pufferpools.

|Es ist nicht möglich, AWE und blockbasierte Unterstützung gleichzeitig für |einen Pufferpool einzurichten. Wenn die Registrierdatenbankvariablen |DB2_AWE und DB2_BLOCK_BASED_BP beide auf denselben Pufferpool verweisen, hat |AWE Vorrang. Die blockbasierte Unterstützung wird in diesem Fall |inaktiviert und erst wieder aktiviert, wenn AWE inaktiviert ist.

|Ein Pufferpool, der erweiterten Speicher nutzt, unterstützt keine |blockbasierte E/A. |

|10.2.1.1 Beispiel für einen blockbasierten Pufferpool

| |

|Bevor Sie mit einem der Beispiele arbeiten, müssen Sie die Kennungen für |die Pufferpools auf Ihrem System kennen. Die ID des Pufferpools sehen |Sie in der Spalte BUFFERPOOLID der Systemkatalogsicht |SYSCAT.BUFFERPOOLS.

|Szenario 1

|Sie haben einen Pufferpool mit der ID 4, der 1000 Seiten enthält. |Sie wollen einen Blockbereich erstellen, der aus 700 Seiten besteht, wobei |jeder Block 32 Seiten enthält. Sie müssen dazu folgenden Befehl |ausführen:

|   db2set DB2_BLOCK_BASED_BP=4,700,32

|Beim Start der Datenbank wird der Pufferpool mit der ID 4 mit einem |Blockbereich von 672 Seiten und einem Seitenbereich von 328 Seiten |erstellt. Die 700 gewünschten Seiten in diesem Beispiel können nicht |ohne Rest durch 32 geteilt werden. D. h., die |angegebene Blockbereichsgröße muss mit folgender Formel auf die nächste |Blockgrößengrenze verringert werden:

|        ((Blockbereichsgröße))
|   FLOOR(-----------------) X Blockgröße
|        ( (Blockgröße)    )
|        (       700       )
| = FLOOR(-----------------) X 32
|        (       32        )
| = 21 x 32
| = 672

|Szenario 2

|Sie haben einen Pufferpool mit der ID 11, der 3000 Seiten enthält. |Sie wollen einen Blockbereich erstellen, der aus 2700 Seiten besteht. |Sie müssen dazu folgenden Befehl ausführen:

|   db2set DB2_BLOCK_BASED_BP=11,2700

|Beim Start der Datenbank wird der Pufferpool mit der ID 11 mit einem |Blockbereich von 2688 Seiten und einem Seitenbereich von 312 Seiten |erstellt. Da für die Blockgröße kein expliziter Wert angegeben ist, |wird der Standardwert 32 verwendet. Die 2700 gewünschten Seiten in |diesem Beispiel können nicht ohne Rest durch 32 geteilt werden. |D. h., die angegebene Blockbereichsgröße muss mit folgender |Formel auf die nächste Blockgrößengrenze verringert werden:

|        ((Blockbereichsgröße))
|   FLOOR(-----------------) X Blockgröße
|        ( (Blockgröße)    )
|        (      2700       )
| = FLOOR(-----------------) X 32
|        (       32        )
| = 84 x 32
| = 2688


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