Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Sperren

Das Sperren von Datensätzen ist in NK-ISAM und K-ISAM unterschiedlich realisiert: in NK-ISAM als Schlüsselsperren, in K-ISAM als Blocksperren.

Schlüsselsperren (NK-ISAM)

Soll ein Satz in die Datei eingefügt (STORE, INSRT) oder mit Schlüsselangabe gelöscht (ELIM) werden, wird der entsprechende Satz von ISAM automatisch gesperrt und nach der Verarbeitung „entsperrt“. Auch wenn Sie die Sperre explizit gefordert haben (externe Sperre mit LOCK), gibt ISAM sie nach Abschluss der Schreiboperation frei – allerdings nicht bei sequenziellen Schreiboperationen (PUT), die über einen Ein-/Ausgabebereich erfolgen. Es wird ein Schlüsselbereich gesperrt, dessen untere Grenze kleiner oder gleich dem Schlüssel der Sätze im Puffer ist. Seine obere Grenze ist „high value“ (X'FF').

Soll ein Datensatz geändert werden, geht der Schreiboperation eine Leseoperation voraus. Sie müssen dann bereits beim Leseaufruf den Satz sperren (GET LOCK). Die Sperre wird automatisch aufgehoben, wenn der Satz zurückgeschrieben (PUTX) oder gelöscht ist (ELIM ohne Schlüsselangabe).

Leseoperationen (GET, GETFL, GETKY, GETR) können mit oder ohne Sperre ausgeführt werden. Nicht gesperrte Sätze können von weiteren Benutzern gelesen, aber auch verändert werden. Eine für eine Leseoperation angeforderte Sperre wird von ISAM nach Abschluss der Leseoperation nicht automatisch aufgehoben.
Auch wenn ein Satz über einen Sekundärschlüssel gelesen wird, bezieht sich die Sperre auf den Primärschlüssel des gelesenen Satzes.

Beim sequenziellen Lesen wird, wenn mit Ein-/Ausgabebereich gearbeitet wird, ein Schlüsselbereich gesperrt, dessen untere bzw. obere Grenze durch den kleinsten bzw. größten Schlüssel der im Puffer enthaltenen Sätze gegeben ist.

Sperren freigeben

Sie können explizit die für Ihren Auftrag bestehende Sperre in der Datei aufheben (ISREQ); dies kann z.B. erforderlich sein, wenn Sie einen Satz für eine Leseoperation gesperrt haben und der Leseoperation keine weitere ISAM-Aktion für die Datei folgt. Da jeder Auftrag nur eine Sperre besitzen darf, hebt jede ISAM-Operation, die explizit oder implizit eine Sperre anfordert, die vorher bestehende Satzsperre auf, sodass keine Deadlock-Situationen entstehen können.

Blocksperre (K-ISAM)

Bei K-ISAM sind alle Sperren als Blocksperren realisiert; d.h., der Datenblock, der den angesprochenen Satz enthält, ist für alle anderen Benutzer gesperrt.