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 BLOB
s 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 DISTINCT
gibt fälschlicherweise mehrere NULL-Werte zurück, wenn sie vorhanden sind
ORDER BY
—
GROUP BY
verkettet 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
BLOB
auf diese Seite, wird es als level 0 BLOB bezeichnet.Die Nummer dieses Sondersatzes wird im Tabellensatz gespeichert und belegt 8 Byte. -
Wenn ein
BLOB
nicht 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.