Zur Aktivierung des Vorablesezugriffs startet der Datenbankmanager separate Steuer-Threads, die als E/A-Server bezeichnet werden, um die Seitenleseoperationen durchzuführen. Infolgedessen gliedert sich die Verarbeitung einer Abfrage in zwei parallele Aktivitäten: Datenverarbeitung (CPU) und E/A-Operationen für Datenseiten. Die E/A-Server warten auf Vorableseanforderungen aus der CPU-Verarbeitungsaktivität. Diese Vorableseanforderungen enthalten eine Beschreibung der benötigten E/A-Operationen, um den erwarteten Datenbedarf zu befriedigen. Der Grund für den Vorablesezugriff bestimmt, wann und wie der Datenbankmanager Vorableseanforderungen generiert. (Weitere Informationen enthalten die Abschnitte Sequentieller Vorablesezugriff und Vorablesezugriff über Listen.)
Die folgende Abbildung veranschaulicht, wie E/A-Server zum Vorablesen von Daten in den Pufferpool verwendet werden.
Abbildung 93. Vorablesen von Daten mit Hilfe von E/A-Servern
Die folgenden Schritte werden in Abbildung 93 gezeigt:
Durch Konfigurieren einer ausreichenden Anzahl von E/A-Servern mit Hilfe des Konfigurationsparameters num_ioservers kann die Leistung von Abfragen, für die der Vorablesezugriff auf Daten verwendet werden kann, erheblich gesteigert werden. Einige über den Bedarf hinaus konfigurierte E/A-Server beeinträchtigen die Leistung nicht, da überschüssige E/A-Server nicht verwendet werden und ihre Speicherseiten ausgelagert werden. Jeder E/A-Server-Prozeß hat eine Nummer. Der Datenbankmanager verwendet immer den verfügbaren Prozeß mit der niedrigsten Nummer, so daß einige der Prozesse mit höheren Nummern eventuell nie zum Einsatz kommen.
Bei der Festlegung, wie viele E/A-Server geeigneterweise konfiguriert werden sollten, sind folgende Punkte zu beachten:
Legen Sie den Wert des Parameters num_ioservers mindestens auf die Zahl der physischen Platten in der Datenbank fest, um die Möglichkeit für parallele E/A-Operationen zu maximieren.
In Umgebungen, in denen mehrere Behälter für einen Tabellenbereich vorhanden sind, kann der Datenbankmanager die parallele Ein-/Ausgabe initialisieren. Parallele E/A bezieht sich auf die Fähigkeit des Datenbankmanagers, mehrere E/A-Server zur Verarbeitung der E/A-Anforderungen einer einzelnen Abfrage zu verwenden. Jedem E/A-Server werden die E/A-Operationen für einen anderen Behälter zugeordnet, so daß mehrere Behälter parallel gelesen werden können. Die parallele Durchführung der E/A-Operationen kann zu bedeutenden Verbesserungen beim E/A-Durchsatz führen.
Obwohl für jeden Behälter ein getrennter E/A-Server die E/A-Operationen durchführt, ist die tatsächliche Anzahl der E/A-Server, die parallele E/A-Operationen durchführen können, auf die Anzahl der physischen Einheiten begrenzt, über die die angeforderten Daten verteilt sind. Dies bedeutet gleichzeitig, daß Sie so viele E/A-Server wie die Anzahl der physischen Einheiten benötigen.
Wie die parallele E/A initialisiert und verwendet wird, hängt von dem Grund für die Durchführung der parallelen E/A ab:
Beim sequentiellen Vorablesezugriff wird die parallele E/A initialisiert, wenn der Wert für PREFETCHSIZE (Menge der vorab gelesenen Daten) ein Vielfaches des Werts für EXTENTSIZE eines Tabellenbereichs ist. Jede Vorableseanforderung wird dann in mehrere kleinere Anforderungen aufgeteilt, die sich an den Grenzen der durch EXTENTSIZE definierten Bereiche orientieren. Diese kleineren Anforderungen werden dann verschiedenen E/A-Servern zugeordnet.
Beim Vorablesezugriff über Listen wird jede Liste von Seiten in Abhängigkeit von den Behältern, in denen die Datenseiten gespeichert sind, in kleinere Listen unterteilt. Diese kleineren Listen werden dann verschiedenen E/A-Servern zugeordnet.
Für Sicherungen oder Wiederherstellungen von Daten ist die Anzahl paralleler E/A-Anforderungen gleich der Größe des Sicherungspuffers dividiert durch den Wert von EXTENTSIZE. Der Maximalwert ist gleich der Anzahl von Behältern.
Für die Wiederherstellung von Daten werden parallele E/A-Anforderungen in gleicher Weise wie beim sequentiellen Vorablesezugriff initialisiert und aufgeteilt. Die Daten werden nicht im Pufferpool wiederhergestellt, sondern direkt aus dem Wiederherstellungspuffer auf die Platte versetzt.
Beim Laden von Daten können Sie den Grad der E/A-Parallelität mit der Option DISK_PARALLELISM des Befehls LOAD angeben. (Wenn diese Option nicht angegeben wird, wird ein Standardwert basierend auf der kumulativen Anzahl von Tabellenbereichsbehältern für alle Tabellenbereiche, die der Tabelle zugeordnet sind, verwendet.)
Für eine optimale Leistung bei paralleler E/A sollten Sie folgende Voraussetzungen erfüllen:
Wenn ein oder mehrere Behälter kleiner als die anderen sind, verringern sie das Potential für das optimierte parallele Vorablesen. Zum Beispiel:
Der Vorablesezugriff muß in höheren Raten durchgeführt werden, um die E/A-Kapazität effektiv zu nutzen. Der Wert für PREFETCHSIZE sollte höher sein, um das Vorablesen in höheren Raten zu ermöglichen. Der Wert für PREFETCHSIZE sollte ein Vielfaches des Werts für EXTENTSIZE und der Anzahl der Tabellenbereichsbehälter sein. Im Idealfall sollten die Behälter so konfiguriert werden, daß sie sich auf getrennten physischen Laufwerken befinden.
Die Anzahl der erforderlichen physischen Laufwerke kann von der Geschwindigkeit und der Kapazität der Laufwerke und des E/A-Busses sowie von der Geschwindigkeit der Prozessoren abhängig sein.
SMS-Tabellenbereiche werden bei Bedarf erweitert. Diese Erweiterung erfolgt standardmäßig um jeweils eine Seite gleichzeitig. Sie können aber bei bestimmten Auslastungen (z. B. bei umfangreichen Einfügeoperationen (Bulk Insert)) die Leistung erhöhen, indem Sie das Programm db2empfa verwenden, um DB2 anzuweisen, die Tabellenbereiche jeweils um Gruppen von Seiten oder Gruppen durch EXTENTSIZE definierter Bereiche zu erweitern. Das Programm db2empfa befindet sich im Unterverzeichnis bin des Verzeichnisses sqllib. Durch Ausführen des Programms wird der Konfigurationsparameter multipage_alloc der Datenbank auf den Wert YES gesetzt. Weitere Informationen zu diesem Programm finden Sie im Handbuch Command Reference.
Eine andere Möglichkeit zur optimalen Verwendung des verfügbaren Speichers wird im Abschnitt Erweitern von Speicher behandelt.