Caractéristiques des BLOB
La taille maximale du champ BLOB est limitée à 4 Go et ne dépend pas de la variante du serveur, 32 bits ou 64 bits (il existe des compteurs de 4 octets dans les structures internes liées aux BLOB). Pour une taille de page de 4096, la taille maximale du champ BLOB est légèrement inférieure à 2 Go.
Les BLOB texte de n’importe quelle longueur et avec n’importe quel jeu de caractères (y compris multi-octets) peuvent être utilisés avec presque toutes les fonctions et opérateurs intégrés.
Les opérateurs suivants sont entièrement pris en charge :
= |
(affectation) |
=, <>, <, <=, >, >= |
(comparaison) |
|
(concaténation) |
|
|
|
|
|
|
Les opérateurs suivants sont partiellement pris en charge :
-
Une erreur se produit si le second argument est supérieur ou égal à 32Kb.
STARTING [WITH]
,LIKE
,CONTAINING
-
Les suggestions d’agrégation ne fonctionnent pas avec le contenu du champ lui-même, mais avec l’ID BLOB. En dehors de cela, il y a quelques bizarreries :
SELECT DISTINCT
produit par erreur des valeurs NULL multiples si elles sont présentes
ORDER BY
—
GROUP BY
fusionne les mêmes lignes si elles sont adjacentes l’une à l’autre, mais ne le fait pas si elles sont éloignées l’une de l’autre
-
Par défaut, un enregistrement régulier est créé pour chaque
BLOB
stocké sur une page de données dédiée (page de données). Si un BLOB entier tient sur cette page, on l’appelle un `BLOB' de niveau 0. Le numéro de cet enregistrement spécial est stocké dans l’enregistrement de la table et occupe 8 octets. -
Si
BLOB
ne tient pas sur une seule page de données (data page), son contenu est placé sur des pages séparées entièrement allouées pour lui (blob page), et les numéros de ces pages sont placés dans l’enregistrement deBLOB
. Il s’agit d’uneBLOB
de niveau 1. -
Si un tableau de numéros de pages de données d’un
BLOB
ne tient pas sur une page de données, alors il est placé sur des pages séparées (blob pages) et l’enregistrement d’unBLOB
contient les numéros de ces pages. Il s’agit d’un `BLOB' de niveau 2. -
Les niveaux supérieurs à 2 ne sont pas pris en charge.