Spec-Zone .ru
спецификации, руководства, описания, API
|
A BLOB
большой двоичный объект, который может содержать переменный объем данных.
Четыре BLOB
типы TINYBLOB
, BLOB
, MEDIUMBLOB
, и LONGBLOB
. Они отличаются только по максимальной длине значений, которые они могут
содержать. Четыре TEXT
типы TINYTEXT
, TEXT
, MEDIUMTEXT
, и LONGTEXT
. Они соответствуют четырем BLOB
у типов и
есть те же самые максимальные длины и требования хранения. См. Раздел
11.6, "Требования Хранения Типа данных".
BLOB
значения обрабатываются как двоичные строки (строки байтов). У них нет никакого
набора символов, и сортировка и сравнение основаны на числовых значениях байтов в значениях столбцов. TEXT
значения обрабатываются как недвоичные строки (символьные строки). У них
есть набор символов, и значения сортируются и сравниваются основанные на сопоставлении набора символов.
Если строгий режим SQL не включается, и Вы присваиваете значение a BLOB
или TEXT
столбец, который превышает максимальную длину столбца, значение, является
усеченным, чтобы соответствовать, и предупреждение сгенерировано. Для усечения непробелов можно вызвать ошибку
произойти (а не предупреждение) и подавить вставку значения при использовании строгого режима SQL. См. Раздел
5.1.7, "Режимы SQL Сервера".
Усечение избыточных конечных пробелов от значений, которые будут вставлены в TEXT
столбцы всегда генерируют предупреждение, независимо от режима SQL.
Для TEXT
и BLOB
столбцы, нет никакого дополнения на
вставке, и никакие байты не разделяются на избранном.
Если a TEXT
столбец индексируется, сравнения элемента индекса дополняются
пространством в конце. Это означает, что, если индексирование требует уникальных значений, двойные ключевые
ошибки произойдут для значений, которые отличаются только по числу конечных пробелов. Например, если таблица
содержит 'a'
, попытка сохранить 'a '
вызывает двойную
ключевую ошибку. Это не истина для BLOB
столбцы.
В большинстве отношений можно расценить a BLOB
столбец как a VARBINARY
столбец, который может быть столь же большим, как Вам нравится. Точно
так же можно расценить a TEXT
столбец как a VARCHAR
столбец. BLOB
и TEXT
отличайтесь от VARBINARY
и VARCHAR
следующими способами:
Для индексирует на BLOB
и TEXT
столбцы, следует определить индексировать длину префикса. Для CHAR
и VARCHAR
, длина префикса является дополнительной. См. Раздел
8.3.4, "Столбец Индексирует".
Если Вы используете BINARY
атрибут с a TEXT
тип
данных, столбец присваивается двоичное сопоставление набора символов столбца.
LONG
и LONG VARCHAR
отобразитесь на MEDIUMTEXT
тип данных. Это - функция совместимости.
MySQL, Connector/ODBC, определяет BLOB
значения как LONGVARBINARY
и TEXT
значения как LONGVARCHAR
.
Поскольку BLOB
и TEXT
значения могут быть чрезвычайно
длинными, Вы могли бы встретиться с некоторыми ограничениями в использовании их:
Только первое max_sort_length
байты столбца используются, сортируя. Значение по
умолчанию max_sort_length
1024. Можно сделать больше байтов существенным в
сортировке или группировке, увеличивая значение max_sort_length
при запуске сервера или времени выполнения. Любой
клиент может изменить значение его сеанса max_sort_length
переменная:
mysql>SET max_sort_length = 2000;
mysql>SELECT id, comment FROM t
->ORDER BY comment;
Экземпляры BLOB
или TEXT
столбцы в результате запроса, который обрабатывается, используя временную таблицу, заставляют сервер
использовать таблицу на диске, а не в памяти потому что MEMORY
механизм
хранения не поддерживает те типы данных (см. Раздел
8.4.3.3, "Использование MySQL How Внутренние Временные таблицы"). Использование диска
подвергается потере производительности, так включайте BLOB
или TEXT
столбцы в запросе заканчиваются, только если они действительно
необходимы. Например, избегать использования SELECT
*
, который выбирает все столбцы.
Максимальный размер a BLOB
или TEXT
объект определяется его типом, но самое большое значение, которое фактически можно передать между
клиентом и сервером, определяется количеством доступной памяти и размером коммуникационных буферов.
Можно изменить размер буфера сообщения, изменяя значение max_allowed_packet
переменная, но следует сделать так и для сервера и
для Вашей клиентской программы. Например, и mysql и mysqldump позволяют Вам изменить сторону клиента max_allowed_packet
значение. См. Раздел 8.11.2, "Настраивая Параметры
Сервера", Раздел 4.5.1, "mysql — MySQL Command-Line Tool", и Раздел 4.5.4, "mysqldump — Программа Резервного копирования базы данных"
. Можно также хотеть сравнить пакетные размеры и размер объектов данных, которые Вы храните
требованиями хранения, видите Раздел 11.6, "Требования
Хранения Типа данных"
Каждый BLOB
или TEXT
значение представляется внутренне
отдельно выделенным объектом. Это в отличие от всех других типов данных, для которых хранение выделяется однажды
для каждого столбца, когда таблица открывается.
В некоторых случаях это может быть требуемым, чтобы сохранить двоичных данных, таких как медиа-файлы в BLOB
или TEXT
столбцы. Можно счесть строковые функции
обработки MySQL полезными для работы с такими данными. См. Раздел 12.5, "Строковые
функции". Для безопасности и других причин, обычно предпочтительно сделать так код программы
использования вместо того, чтобы дать пользователям приложения FILE
полномочие. Можно обсудить специфические особенности для различных
языков и платформ в MySQL Forums (