Zeilenlänge berechnen
Für jede Zeile in jeder Tabelle sind für die rowid-, createxid- und deletexid-Spalte zusätzliche 24 Byte (Fixwert) verfügbar. Wenn Spalten vorhanden sind, die Nullwerte enthalten dürfen, ist ein Nullvektor erforderlich, der mit N/8 berechnet wird, wobei N die Anzahl Spalten im Datensatz angibt. Das System rundet die Größe dieses Headers auf ein Vielfaches von 4 Byte auf.
- Spalte des Typs VARCHAR
- Spalte des Typs CHAR, die länger als 16 ist (intern als VARCHAR gespeichert)
- Spalte des Typs NCHAR
- Spalte des Typs NVARCHAR
- Spalte des Typs JSON
Bei Verwendung der UTF-8-Codierung kann jeder Unicode-Codepunkt 1-4 Byte Speicher benötigen. Eine aus 10 Zeichen bestehende Zeichenfolge benötigt 10 Byte Speicher, wenn sie in ASCII-Darstellung vorliegt, bis zu 20 Byte, wenn sie im lateinischen Zeichensatz vorliegt, oder bis zu 40 Byte, wenn sie in Kanji-Darstellung vorliegt.
Der einzige Fall, bei dem ein Datensatz keinen Header enthält, liegt dann vor, wenn alle Spalten als NOT NULL definiert sind, keine Zeichendatentypen größer als 16 Byte und keine Typen mit variablen Zeichendaten vorhanden sind.
| createxid | deletexid | Zeilen-ID | Nullvektor | Datensatzlänge | Column_1 …Spalte_n |
|---|---|---|---|---|---|
| 8 Byte | 8 Byte | 8 Byte | N/8 Byte | 4 Byte | Anzahl Byte |