Особенности BLOB
Максимальный размер поля BLOB ограничен 4Гб и не зависит от варианта сервера, 32 битный или 64 битный (во внутренних структурах, связанных с BLOB присутствуют 4-х байтные счётчики). Для размера страницы 4096 максимальный размер BLOB поля несколько ниже 2 Гб.
Текстовые BLOB любой длины и с любым набором символов (включая multi-byte) могут быть использованы практически с любыми встроенными функциями и операторами.
Полностью поддерживаются следующие операторы:
= |
(присвоение) |
=, <>, <, <=, >, >= |
(сравнение) |
|
(конкатенация) |
|
|
|
|
|
|
Частично поддерживаются следующие операторы:
-
возникает ошибка, в случае если второй аргумент больше или равен 32 Кб
STARTING [WITH]
,LIKE
,CONTAINING
-
Предложения агрегирования работают не с содержимым самого поля, а с идентификатором BLOB ID. Помимо этого, есть некоторые странности:
SELECT DISTINCT
ошибочно выдаёт несколько значений NULL, если они присутствуют
ORDER BY
—
GROUP BY
объединяет одинаковые строки, если они находятся рядом, но не делает этого, если они располагаются вдали друг от друга
-
По умолчанию, для каждого
BLOB
создаётся обычная запись, хранящаяся на какой-то выделенной для этого странице данных (data page). Если весь BLOB на эту страницу поместится, его называютBLOB
уровня 0. Номер этой специальной записи хранится в записи таблицы и занимает 8 байт. -
Если
BLOB
не помещается на одну страницу данных (data page), то его содержимое размещается на отдельных страницах, целиком выделенных для него (blob page), а в записи оBLOB
помещают номера этих страниц. ЭтоBLOB
уровня 1. -
Если массив номеров страниц с данными
BLOB
не помещается на страницу данных (data page), то его (массив) размещают на отдельных страницах (blob page), а в запись оBLOB
помещают уже номера этих страниц. ЭтоBLOB
уровня 2. -
Уровни выше 2 не поддерживаются.