Поиск с использованием заголовка возвратил 1 вопрос о переполнении стека, которое не было связано, а с MySQL 65535 символов упоминалось как максимум; но это ... нормальные символы или это будет только одна пятая этого? Мне нужно выяснить это, чтобы решить, стоит ли пытаться поместить тысячи фрагментов данных, подобных этому, 0A1D2A3B ... в один, предположительно, очень широкий столбец, чтобы его можно было прочитать один раз, а затем обработать с помощью php для манипулирования строками, или, поместить все эти фрагменты данных в строки, по одному на строку.

Я мог бы представить, что быстрее прочитать один столбец и выполнить поиск по очень длинной строке, чем считывать десятки тысяч строк в массив, а затем я считаю, что работать со строками проще, чем с массивами в php.

1 ответ1

0

Может ли MySQL обрабатывать строку длиной 2 миллиона символов в BLOB?

Максимальный размер BLOB объекта составляет 65535 байт.

Однако, если вы хотите сохранить большие значения, вы можете использовать MEDIUMBLOB (16,777,215 байт) или LONGBLOB (4G байт).

Замечания:

  • При использовании набора символов Unicode не все символы используют одинаковое количество байтов и могут потребовать до трех (четырех) байтов на символ.

Тем не мение:

Максимальный размер объекта BLOB или TEXT определяется его типом, но наибольшее значение, которое вы фактически можете передать между клиентом и сервером, определяется объемом доступной памяти и размером буферов связи.


UTF-8 - это то, что я буду помещать туда

Набор символов utf8 в MySQL 5.7 такой же, как и до 5.7, и имеет те же характеристики:

  • Нет поддержки дополнительных символов (только символы BMP).

  • Максимум три байта на многобайтовый символ.


Что такое BLOB?

BLOB - это большой двоичный объект, который может содержать переменное количество данных. Четырьмя типами BLOB являются TINYBLOB, BLOB, MEDIUMBLOB и LONGBLOB. Они отличаются только максимальной длиной значений, которые они могут содержать. Четырьмя типами TEXT являются TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT. Они соответствуют четырем типам BLOB и имеют одинаковую максимальную длину и требования к хранению. См. Раздел 11.7, «Требования к типу данных для хранения».

...

Максимальный размер объекта BLOB или TEXT определяется его типом, но наибольшее значение, которое вы фактически можете передать между клиентом и сервером, определяется объемом доступной памяти и размером буферов связи. Вы можете изменить размер буфера сообщений, изменив значение переменной max_allowed_packet, но вы должны сделать это как для сервера, так и для вашей клиентской программы.

Источник 11.4.3. Типы BLOB и TEXT:


Требования к хранилищу для строковых типов

В следующей таблице M представляет объявленную длину столбца в символах для недвоичных типов строк и байтов для типов двоичных строк. L представляет фактическую длину в байтах данного строкового значения.

...

На этой странице перечислены типы BLOB и TEXT, а также приведена формула для расчета требуемой памяти, но не указаны разные максимальные размеры. Вот они:

  • TINYTEXT - 255 байт
  • ТЕКСТ - 65535 байт
  • MEDIUMTEXT - 16 777 215 байт (2 ^ 24 - 1)
  • LONGTEXT - 4G байтов (2 ^ 32 - 1)

  • TINYBLOB - 255 байт

  • BLOB - 65535 байт
  • MEDIUMBLOB - 16 777 215 байт (2 ^ 24 - 1)
  • LONGBLOB - 4G байтов (2 ^ 32 - 1)

Источник Раздел 11.7 Требования к типу данных:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .