Überlaufblöcke sind Verlängerungen von Datenblöcken. Sie entstehen, wenn Sätze geschrieben werden, die länger sind als der nutzbare Bereich des Datenblocks. Dies ist z.B. der Fall, wenn Sie Sätze mit gleichen Schlüsseln verwenden und bei der Definition von Satz- und Blocklänge nicht berücksichtigen, dass NK-ISAM solchen Sätzen intern einen 8 Byte langen Zeitstempel anhängt. Überlaufblöcke entstehen auch bei der Umsetzung von K-ISAM-Dateien in NK-ISAM-Dateien, wenn in der K-ISAM-Datei die maximale Satzlänge ausgenutzt wurde.
Die „überlaufenden“ Daten stehen immer am Beginn des Überlaufblocks; am Ende des Blocks befindet sich ein Zeiger auf den zugehörigen Datenblock. Der Datenbereich des Überlaufblocks darf weder Teile des ISAM-Schlüssels (Primärschlüssels) noch der Markierung noch eines Sekundärschlüssels enthalten.
maximale Satzlänge / nutzbare Blocklänge
Werden folgende Regeln beachtet, entstehen keine Überlaufblöcke:
die maximal zulässige Satzlänge ergibt sich aus der BLKSIZE- bzw. BUFFER-LENGTH-Angabe:
n * 2048, 1 <= n <= 16 (für BLKSIZE=(STD,n) bzw. BUFFER-LENGTH=*STD(SIZE=n))die nutzbare Blocklänge reduziert sich um den für Verwaltungsinformationen und Zeitstempel benötigten Bereich
da ISAM intern allen Datensätzen ein 4-Byte-Feld mit der Satzlänge voranstellt, reduziert sich bei Sätzen mit RECFORM=F bzw. RECORD-FORMAT=*FIXED die nutzbare Blocklänge noch einmal um 4 Byte
Es ergibt sich folgende Formel für die nutzbare Blocklänge:
RECSIZE
<= n * 2032 - 16 - T - F
n | Blockungsfaktor aus BLKSIZE = (STD,n), 1 <= n <= 16 bzw. BUFFER-LENGTH=*STD(SIZE=n) |
T | Zeitstempel |
T = 8 für Dateien mit Mehrfachschlüsseln | |
T = 0 für Dateien ohne Mehrfachschlüssel | |
F | Satzformat |
F = 0 bei RECFORM = V bzw. RECORD-FORMAT=*VARIABLE | |
F = 4 bei RECFORM = F bzw. RECORD-FORMAT=*FIXED |
Blockungsfaktor n | max. Satzlänge = BLKSIZE | nutzbare Blocklänge |
---|---|---|
1 | 2048 | 2016 |
2 | 4096 | 4048 |
3 | 6144 | 6080 |
4 | 8192 | 8112 |
5 | 10240 | 10144 |
6 | 12288 | 12176 |
7 | 14336 | 14208 |
8 | 16384 | 16240 |
9 | 18432 | 18272 |
10 | 20480 | 20304 |
11 | 22528 | 22336 |
12 | 24576 | 24368 |
13 | 26624 | 26400 |
14 | 28672 | 28432 |
15 | 30720 | 30464 |
16 | 32768 | 32496 |
Maximale Schlüsselposition und -länge
Da weder ISAM-Schlüssel noch Markierungen in einen Überlaufblock hineinragen dürfen, ergeben sich auch für Schlüsselposition (KEYPOS), Schlüssellänge (KEYLEN), Wertmarkierung (VALLEN) und logische Markierung (LOGLEN) Maximalwerte – abhängig von Blockungsfaktor und Satzformat. Die zulässigen Höchstwerte lassen sich nach folgenden Formeln aus der nutzbaren Blocklänge (siehe Tabelle 49) errechnen:
ISAM-Schlüssellänge / -position:
|
KEYPOS | Schlüsselposition |
KEYLEN | Schlüssellänge |
VALLEN | Wertmarkierung (Länge) |
LOGLEN | logische Markierung (Länge) |
SL | nutzbare Blocklänge |
F | abhängig vom Satzformat:
|
Beispiel
Dateieigenschaften: | BLKSIZE = (STD,1) |
Für KEYPOS ergeben sich folgende Werte:
RECFORM = V => KEYPOS
<= 2016 - 12 + 1 = 2005
RECFORM = F => KEYPOS
<= 2016 - 4 - 12 + 1 = 2001