Какой тип столбца mysql для сериализации (данных)?

Я сериализую много массивов в php, которые должны храниться в базе данных с использованием mysql.

Длина финальной строки может сильно различаться от чего-либо между 2000 и 100 000+, мне было интересно, какой будет лучший тип столбца для этого?

В настоящее время я настроен как LONGTEXT но я чувствую, что это слишком много! База данных уже активна и имеет около 3 миллионов строк, это новый столбец, который будет добавлен в ближайшее время.

благодаря

Всегда используйте любой тип данных BLOB для сериализации данных, чтобы он не прерывался и прерывал сериализацию двоично-безопасным способом. Если максимальная длина конечной строки невелика, вам понадобится LONGBLOB . Если вы знаете, что данные не заполнят 2 ^ 24 символа, вы можете использовать MEDIUMBLOB . MEDIUMBLOB составляет около 16 МБ, а LONGBLOB – около 4 ГБ, поэтому я бы сказал, что вы довольно безопасны с MEDIUMBLOB .

Почему двоичный тип данных? Текстовые типы данных в Mysql имеют кодировку. Кодировка символов будет влиять на то, как сериализованные данные переносятся между различными кодировками. Например, когда он хранится как Latin-1, но затем считывается как UTF-8 (например, из-за настройки кодирования соединения с драйвером базы данных), сериализованные данные могут быть повреждены, поскольку бинарные смещения сдвигаются, однако сериализованные данные не были закодированы для таких сдвигов. Сериализованные строки PHP являются двоичными данными, а не с какой-либо конкретной кодировкой.

Вы должны выбрать BLOB (как заметил Марк Б) в руководстве PHP для serialize ():

«Обратите внимание, что это [выдает] двоичную строку, которая может содержать нулевые байты и должна быть сохранена и обработана как таковая. Например, вывод serialize () обычно должен храниться в поле BLOB в базе данных, а не в CHAR или Текстовое поле."

Источник: http://php.net/serialize

Разумеется, следует учитывать и данные J.Money относительно размеров, но даже BLOB имеет свои пределы, и если вы собираетесь их превышать, вам понадобится MEDIUMBLOB или LONGBLOB.