Die Größe eines ISAM-Pools wirkt sich auf die Performance der Dateiverarbeitung aus. Für die Optimierung/Anpassung der Poolgröße an die Dateiverarbeitung muss Folgendes beachtet werden:
Wie viele Dateien sollen über den ISAM-Pool verarbeitet werden?
Wie sollen sie verarbeitet werden: sequenziell oder nichtsequenziell?
Wie groß sind Index- und Datenbereich bzw. die Datenblöcke?
Wie viele Aufträge können auf den Pool zugreifen?
Im Folgenden wird zunächst die Größenberechnung eines taskspezifischen ISAM-Pools für eine Datei erklärt. Soll der Pool mehrere Dateien aufnehmen können, ist diese Berechnung für jede Datei durchzuführen und die Ergebnisse sind zu addieren. Soll der ISAM-Pool auch für weitere Aufträge zugänglich sein, muss der Platzbedarf für jeden Auftrag berechnet und die Ergebnisse addiert werden. Einen Sonderfall bilden Dateien, die gleichzeitig von mehreren Aufträgen bearbeitet werden (SHARUPD=YES): der Platzbedarf für den Indexbereich braucht nur einmal berücksichtigt zu werden.
Zur Größenberechnung von Index- und Datenteilen von ISAM-Dateien siehe Abschnitt „Größenberechnung von ISAM-Dateien".
Sequenzielle Dateiverarbeitung
Bei rein sequenzieller Dateiverarbeitung wird die Performance von der Poolgröße kaum beeinflusst: bearbeitete Blöcke werden nicht noch einmal benötigt, sodass der ISAM-Pool sehr klein gehalten werden kann. Er sollte gleichzeitig aufnehmen können: den Kontrollblock, die benötigten Indexblöcke und zwei Datenblöcke inklusive evtl. nötiger Überlaufblöcke. Für die Poolgröße gilt – näherungsweise – folgende Formel:
Poolgröße:
|
i = Anzahl der Indexstufen der Datei
m = Anzahl der PAM-Seiten pro Datenblock inklusive Überlaufblock (m = n+1, n aus BLKSIZE=(STD,n))
Der Faktor 1.1 berücksichtigt, dass ca. 10% des Pool-Platzbedarfs für Verwaltungsdaten genutzt werden.
Die Gesamtzahl der Indexblöcke einer ISAM-Datei kann näherungsweise mit der Zahl der Indexblöcke in der untersten Indexebene gleichgesetzt werden. Für die Berechnung der optimalen Poolgröße bedeutet dies: für nichtsequenziell verarbeitete ISAM-Dateien wird zunächst der Platzbedarf für den Indexbereich ermittelt; da auch einige Datenblöcke im Pool Platz haben sollten, muss dieser Wert nach oben gerundet werden.
Anzahl Indexblöcke der Ebene 1:
|
LASTPG = Anzahl der PAM-Seiten der Datei
n = Blockungsfaktor (BLKSIZE=(STD,n))
Der Wert 160 entspricht der durchschnittlichen Anzahl Indexeinträge pro Indexblock.
Beispiel: Poolgröße
Für die Datei ISAM.B gilt: LASTPG = 18270; ISAM.B wurde mit BLKSIZE=(STD,2) definiert und enthält keine Überlaufblöcke.
LASTPG / n = 18270 / 2 = 9135
Die Datei enthält ca. 9135 Datenblöcke.
9135 / 160 > 57
Die unterste Indexebene besteht aus 57 Indexblöcken. Die optimale Poolgröße läge für diese Datei zwischen 60 und 70 PAM-Seiten: außer dem gesamten Indexbereich könnte der Pool mehrere Datenblöcke aufnehmen.
Kleine Dateien
Kleine Dateien können u.U. ganz in den ISAM-Pool aufgenommen werden.
Poolgröße für kleine ISAM-Dateien:
|
LASTPG ist die höchste von ISAM benutzte PAM-Seite und zeigt damit die Dateigröße an.
Indexblöcke im ISAM-Pool
Günstig ist, wenn alle Indexblöcke in den ISAM-Pool aufgenommen werden können. Zusätzlich sollte noch für jeden auf die Datei zugreifenden Auftrag Platz für einen Datenblock vorgesehen werden. Der Platzbedarf lässt sich folgendermaßen errechnen.
Platzbedarf:
|
„#TASK“ ist die Anzahl gleichzeitig auf die Datei zugreifender Aufträge; BLKSIZE der Blockungsfaktor.
Minimale Poolgröße
minimale Poolgröße:
|
Außer Blockgröße und Anzahl „paralleler Aufträge“ muss die Anzahl der Indexebenen (#INDEX) einer Datei berücksichtigt werden. #INDEX kann folgendermaßen abgeschätzt werden:
Anzahl Indexebenen:
|
„ln“ ist der natürliche Logarithmus, „[„ und „]“ bedeuten, dass der Gesamtausdruck auf die nächsthöhere ganze Zahl zu runden ist.
Poolspezifische Grenzwerte
Die Anzahl Dateien (#FILE) und die Anzahl gleichzeitig zugreifender Aufträge (#TASK) für einen Pool sind durch die SIZE-Angabe begrenzt. Es muss gelten:
Grenzwerte:
|
Wirksam ist nur der intern durch Rundung entstehende SIZE-Wert, nicht der vom Benutzer angegebene.
Beispiel
Im Makro CREPOOL bzw. dem Kommando CREATE-ISAM-POOL definierte Poolgröße: SIZE = 32 . Die Summe der eröffneten Dateien und der angeschlossenen Aufträge darf den Wert 44 nicht überschreiten.