BLOB-Besonderheiten
Die maximale Größe eines 'BLOB'-Feldes ist auf 4 GB begrenzt, unabhängig davon, ob der Server 32-Bit oder 64-Bit ist.(Die internen Strukturen, die sich auf BLOBs beziehen, unterhalten ihre eigenen 4-Byte-Zähler.)Bei einer Seitengröße von 4 KB (4096 Byte) ist die maximale Größe geringer – etwas weniger als 2 GB.
Text-BLOBs beliebiger Länge und beliebiger Zeichensätze – auch Multibyte – können Operanden für praktisch jede Anweisung oder interne Funktion sein.Die folgenden Operatoren werden vollständig unterstützt:
= |
(Zuweisung) |
=, <>, <, <=, >, >= |
(Vergeleich) |
|
(Verkettung) |
|
|
|
|
|
|
Als eine effiziente Alternative können Sie auch BLOB_APPEND() verwenden.
Teilunterstützung:
-
Bei diesen tritt ein Fehler auf, wenn das Suchargument größer oder gleich 32 KB ist:
STARTING [WITH],LIKE,CONTAINING -
Aggregationsklauseln wirken sich nicht auf den Inhalt des Feldes selbst aus, sondern auf die BLOB-ID. Abgesehen davon gibt es einige Macken:
SELECT DISTINCTgibt fälschlicherweise mehrere NULL-Werte zurück, wenn sie vorhanden sind
ORDER BY—
GROUP BYverkettet dieselben Zeichenfolgen, wenn sie nebeneinander liegen, tut dies jedoch nicht, wenn sie voneinander entfernt sind
BLOB-Speicher-
Standardmäßig wird für jedes BLOB ein regulärer Datensatz erstellt und auf einer ihm zugeordneten Datenseite gespeichert.Passt das gesamte
BLOBauf diese Seite, wird es als level 0 BLOB bezeichnet.Die Nummer dieses Sondersatzes wird im Tabellensatz gespeichert und belegt 8 Byte. -
Wenn ein
BLOBnicht auf eine Datenseite passt, wird sein Inhalt auf separate, ihm exklusiv zugeordnete Seiten (Blob-Seiten) gelegt, während die Nummern dieser Seiten imBLOB-Record gespeichert werden.Dies ist ein Level 1 BLOB. -
Wenn das Array von Seitennummern, das die
BLOB-Daten enthält, nicht auf eine Datenseite passt, wird das Array auf separate Blob-Seiten gelegt, während die Nummern dieser Seiten in denBLOB-Datensatz geschrieben werden.Dies ist ein Level-2-BLOB. -
Level höher als 2 werden nicht unterstützt.