6.2.3.2 Типы данных BLOB и TEXT
6.2.3.2 Типы данных BLOB и TEXT
Тип данных BLOB представляет собой двоичный объект большого размера,
который может содержать переменное количество данных. Существуют 4
модификации этого типа - TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB,
отличающиеся только максимальной длиной хранимых величин.
See section 6.2.6 Требования к памяти для различных типов столбцов.
Тип данных TEXT также имеет 4 модификации - TINYTEXT, TEXT, MEDIUMTEXT и
LONGTEXT, соответствующие упомянутым четырем типам BLOB и имеющие те же
максимальную длину и требования к объему памяти. Единственное различие
между типами BLOB и TEXT состоит в том, что сортировка и сравнение данных
выполняются с учетом регистра для величин BLOB и без учета регистра для
величин TEXT. Другими словами, TEXT - это независимый от регистра BLOB.
Если размер задаваемого в столбце BLOB или TEXT значения превосходит
максимально допустимую длину столбца, то это значение соответствующим
образом усекается.
В большинстве случаев столбец TEXT может рассматриваться как столбец
VARCHAR неограниченного размера. И, аналогично, BLOB - как столбец типа
VARCHAR BINARY. Различия при этом следующие:
-
Столбцы типов BLOB и TEXT могут индексироваться в версии MySQL 3.23.2
и более новых. Более старые версии MySQL не поддерживают индексацию
этих столбцов.
-
В столбцах типов BLOB и TEXT не производится удаление концевых
символов, как это делается для столбцов типа VARCHAR.
-
Для столбцов BLOB и TEXT не может быть задан атрибут DEFAULT -
значения величин по умолчанию.
В MyODBC величины типа BLOB определяются как LONGVARBINARY и величины типа
TEXT - как LONGVARCHAR.
Так как величины типов BLOB и TEXT могут быть чрезмерно большими, при их
использовании целесообразно предусмотреть некоторые ограничения:
Чтобы обеспечить возможность использования команд GROUP BY или ORDER
BY в столбце типа BLOB или TEXT, необходимо преобразовать значение
столбца в объект с фиксированной длиной. Обычно это делается с помощью
функции SUBSTRING. Например:
mysql> SELECT comment FROM tbl_name,SUBSTRING(comment,20) AS substr
-> ORDER BY substr;
Если этого не сделать, то операция сортировки в столбце будет выполнена
только для первых байтов, количество которых задается параметром
max_sort_length. Значение по умолчанию величины max_sort_length равно
1024; это значение можно изменить, используя параметр -O сервера mysqld
при его запуске. Группировка выражения, включающего в себя величины BLOB
или TEXT, возможна при указании позиции столбца или использовании
псевдонима:
mysql> SELECT id,SUBSTRING(blob_col,1,100) FROM tbl_name GROUP BY 2;
mysql> SELECT id,SUBSTRING(blob_col,1,100) AS b FROM tbl_name GROUP BY b;
Максимальный размер объекта типа BLOB или TEXT определяется его типом,
но наибольшее значение, которое фактически может быть передано между
клиентом и сервером, ограничено величиной доступной памяти и размером
буферов связи. Можно изменить размер буфера блока передачи, но сделать
это необходимо как на стороне сервера, так и на стороне клиента.
See section 5.5.2 Настройка параметров сервера.
Следует учитывать, что внутренним представлением любой величины типа BLOB
или TEXT является отдельно размещенный объект - в противоположность всем
остальным типам столбцов, для которых память выделяется единовременно для
столбца при открытии таблицы.
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий
|