Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Einsatz von NK-ISAM

Einsatz von ISAM-Pools

Sie können entscheiden, ob Ihre Dateien in eigenen Benutzer-Pools verarbeitet werden sollen oder in Standardpools, die Ihnen das System zur Verfügung stellt.

Wird bei größeren Anwendungen Performance-Optimierung angestrebt, sollten unbedingt Benutzer-ISAM-Pools verwendet werden, da nur so die Poolgröße den Erfordernissen der Anwendung angepasst werden kann.

Standardpools können eingesetzt werden, wenn Sie nur gelegentlich und in geringem Umfang mit ISAM arbeiten. Auch am Beginn der Umstellung von K-ISAM auf NK-ISAM kann u.U. mit Standardpools gearbeitet werden.

Dimensionierung von ISAM-Pools

Für den Benutzer stellt sich die Frage nach der optimalen Poolgröße nur für die Benutzer-Pools. Die Möglichkeit, ganze Dateien in einen ISAM-Pool zu laden, sodass während der Dateiverarbeitung keine Ein-/Ausgaben durchzuführen sind, lässt sich nur für kleine Dateien realisieren: maximale Poolgröße ist 4096 PAM-Seiten.

ISAM-Pools sollten die Indexblöcke der Datei aufnehmen können und mindestens einen Datenblock pro Auftrag, der auf die Datei zugreift. Bei der Berechnung der optimalen Poolgröße muss auch der reale Speicher berücksichtigt werden, da große ISAM-Pools ohne ausreichenden Ausbau des Realspeichers eine Erhöhung der Paging-Rate zur Folge haben. Außerdem kann zwischen „aktiven Dateien“, die ständig im Zugriff sind, und Dateien, auf die nur gelegentlich zugegriffen wird, unterschieden werden: nur „aktive Dateien“ belegen Seiten des ISAM-Pools.

Sequenzielle Dateiverarbeitung in ISAM-Pools

Bei sequenzieller Verarbeitung lässt sich die Ein-/Ausgaberate nur geringfügig reduzieren. In taskspezifischen Pools erfolgt z.B. Blockwechsel durch lineares Fortschalten der Indexeinträge, sodass fast stets auf die gleichen Indexblöcke zugegriffen wird. Eine andere Möglichkeit zur Optimierung bieten große Blockungsfaktoren; bei rein sequenzieller Verarbeitung rentieren sich also keine großen Pools.

Satzlänge

Da jede PAM-Seite mit einem 16-Byte-Kontrollfeld beginnt, reduziert sich entsprechend der in einem Block zur Verfügung stehende Platz. Sollen keine Überlaufblöcke entstehen, gilt für die Satzlänge folgende Regel:

RECSIZE <= (n * 2048) - (n * 16) - 16 - F - T

F

Satzformat F = 0/4 für RECFORM = V/F

T

Zeitstempel T = 0/8 für Dateien ohne/mit Mehrfachschlüssel

(n * 2048) beschreibt die Blocklänge (BLKSIZE), (n * 16) beschreibt das Blockkontrollfeld am Beginn einer jeden PAM-Seite.

Flag-Verarbeitung

Da die Markierungen nicht mehr in den Index übernommen werden, ist bei NK-ISAM die Flag-Verarbeitung nur noch als sequenzielles Durchsuchen von Dateiabschnitten realisiert, was die Performance stark senken kann. Im GETFL-Makroaufruf sollte der zu durchsuchende Bereich über den LIMIT-Operanden möglichst klein gehalten werden.

Schlüsselposition und Indexlänge

Der ISAM-Index darf nicht in Überlaufblöcke hineinragen; es gilt also für den Indexaufbau Folgendes (Markierungen müssen – wenn vorhanden – berücksichtigt werden!):

KEYPOS + KEYLEN + VALLEN + LOGLEN <= n * 2032 - 16 - F

n

Blockungsfaktor in BLKSIZE=(STD,n), 1 <= n <= 16

F

Satzformat

  • F = 0 für RECFORM = V
  • F = 4 für RECFORM = F
ISAM-Pools und BLKCTRL = DATA ohne NK-ISAM

Ist NK-ISAM an einem Rechner nicht geladen und versucht ein Benutzer ISAM-Pools zu erzeugen oder NK-ISAM-Dateien (BLKCTRL=DATA) zu verarbeiten, wird die Verarbeitung mit einer Fehlermeldung abgebrochen. Für ISAM-Pool-Makros wird im Standardheader der Operandenliste ein Returncode hinterlegt. Der FCB der entsprechenden Datei enthält im Feld ID1ECB einen Fehlerschlüssel.

Auf Band kopierte ISAM-Dateien

ISAM-Dateien können zwar auf Band gesichert werden, sind als Banddateien jedoch nicht mit ISAM verarbeitbar.

Auf Bändern wird keine Information über das Dateiformat (BLKCTRL bzw. BLOCK-CONTROL-INFO ) geführt. Diese Information erlischt also für auf Band (mit COPFILE bzw. mit COPY-FILE) kopierte Dateien, wenn der Katalogeintrag gelöscht wird.

Soll die Datei wieder zurückkopiert werden, muss dem COPFILE ein FILE-Aufruf mit dem Operanden STATE=FOREIGN vorausgehen bzw. dem Kommando COPY-FILE das Kommando IMPORT-FILE. Sie müssen den Operanden BLKCTRL bzw. BLOCK-CONTROL-INFO richtig versorgen, d.h. dem tatsächlichen Dateiformat entsprechend PAMKEY oder DATA bzw. *PAMKEY oder *WITHIN-DATA-BLOCK angeben.

Wird eine K-ISAM-Datei (BLKCTRL=PAMKEY) auf diese Weise – versehentlich – als NK-ISAM-Datei (BLKCTRL=DATA) kopiert, ist die entstehende Plattendatei nicht lesbar, da die ersten 16 Bytes einer jeden PAM-Seite, die bei BLKCTRL=PAMKEY Daten enthalten, mit Verwaltungsinformationen überschrieben werden.

OPEN-Fehler bei der Verarbeitung von NK-ISAM-Dateien
  • NK-ISAM-Datei auf Band: Beim Importieren/Zurückschreiben der Banddatei wurde ein falsches Datenformat im FILE- oder FCB-Makroaufruf bzw. im Kommando IMPORT-FILE angegeben.

  • ISAM-Pool überlastet: Ist der ISAM-Pool, in dem eine NK-ISAM-Datei eröffnet werden soll, überlastet, wird die OPEN-Verarbeitung mit dem Fehlercode DMS0D9B abgewiesen.