Каков максимальный размер MySQL VARCHAR?

Я хотел бы знать, что такое максимальный размер для типа MySQL VARCHAR.

Я читал, что максимальный размер ограничен размером строки, который составляет около 65 тыс. Я попытался настроить поле на varchar(20000), но он говорит, что это слишком большое.

Я мог бы установить его на varchar(10000). Каков максимальный максимум, на который я могу установить?

Ответ 1

Имейте в виду, что MySQL имеет максимальный предел размера строки

Внутреннее представление таблицы MySQL имеет максимальный предел размера строки 65 535 байт, не считая типы BLOB и TEXT. Столбцы BLOB и TEXT вносят только от 9 до 12 байт к пределу размера строки, потому что их содержимое хранится отдельно от остальной части строки. Подробнее о Ограничения по столбцу столбца и размеру строки.

Максимальный размер одного столбца может занимать, отличается до и после MySQL 5.0.3

Значения в столбцах VARCHAR представляют собой строки переменной длины. Длина может быть указана как значение от 0 до 255 до MySQL 5.0.3 и от 0 до 65,535 в 5.0.3 и более поздних версиях. Эффективная максимальная длина VARCHAR в MySQL 5.0.3 и более поздних версиях зависит от максимального размера строки (65 535 байт, которая распределяется между всеми столбцами) и используемого набора символов.

Однако обратите внимание, что предел ниже, если вы используете многобайтовый набор символов, например utf8 или utf8mb4.

Используйте TEXT типы inorder для преодоления ограничения размера строки.

Четыре типа TEXT представляют собой TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT. Они соответствуют четырем типам BLOB и имеют одинаковую максимальную длину и требования к хранению.

Подробнее о типах BLOB и TEXT

Еще больше

Оформить дополнительную информацию о Требованиях к типу хранения типов данных, который касается требований к хранению для всех типов данных.

Ответ 2

В соответствии с онлайн-документами существует предел в 64 тысячи строк, и вы можете определить размер строки, используя:

row length = 1
             + (sum of column lengths)
             + (number of NULL columns + delete_flag + 7)/8
             + (number of variable-length columns)

Вам нужно иметь в виду, что длины столбцов не являются взаимно однозначным отображением их размера. Например, CHAR(10) CHARACTER SET utf8 требует трех байтов для каждого из десяти символов, поскольку для этой конкретной кодировки необходимо учитывать свойство с тремя байтами на символ utf8 (что MySQL utf8, а не "реальный" UTF-8, который может содержать до четырех байтов).

Но если размер вашей строки приближается к 64 КБ, вы можете изучить схему своей базы данных. Это редкая таблица, которая должна быть такой широкой в ​​базе данных с правильной настройкой (3NF) - это возможно, просто не очень часто.

Если вы хотите использовать больше, вы можете использовать типы BLOB или TEXT. Они не учитывают предел 64K строки (кроме небольшого административного следа), но вам нужно знать о других проблемах, возникающих при их использовании, таких как невозможность сортировки с использованием всего текстового блока за пределами определенного номера (хотя это может быть настроено вверх), заставляя временные таблицы находиться на диске, а не в памяти, или настраивать буферы клиентских и серверных сообщений для эффективного управления размерами.

Разрешенные размеры:

TINYTEXT          255 (+1 byte  overhead)
TEXT          64K - 1 (+2 bytes overhead)
MEDIUMTEXT    16M - 1 (+3 bytes overhead)
LONGTEXT      4G  - 1 (+4 bytes overhead)

У вас все еще есть несоответствие байт/символа (так что столбец MEDIUMTEXT utf8 может хранить "всего" около полумиллиона символов, (16M-1)/3 = 5,592,405), но он все еще значительно расширяет диапазон.

Ответ 3

Источник

Максимальная длина varchar зависит от максимального размера строки в MySQL, который составляет 64 КБ (не считая BLOB):

VARCHAR (65535) Однако обратите внимание, что предел ниже, если вы используете многобайтовый набор символов:

VARCHAR (21844) CHARACTER SET utf8

Ответ 4

вы также можете использовать MEDIUMBLOB/LONGBLOB или MEDIUMTEXT/LONGTEXT

Тип BLOB в MySQL может хранить до 65534 байт, если вы попытаетесь сохранить больше, чем это много данных, MySQL усечет данные. MEDIUMBLOB может хранить до 16,777,213 байт, а LONGBLOB может хранить до 4 294 967 292 байта.

Ответ 5

Из документации MySQL:

Эффективная максимальная длина VARCHAR в MySQL 5.0.3 и более поздних версиях при условии максимального размера строки (65 535 байт, которая распределяется между все столбцы) и используемый набор символов. Например, символы utf8 может потребоваться до трех байтов на символ, поэтому столбец VARCHAR, который используется набор символов utf8, который может быть объявлен как максимум 21 844 символы.

Пределы для VARCHAR варьируются в зависимости от используемой кодировки. Использование ASCII будет использовать 1 байт на символ. Это означает, что вы можете сохранить 65535 символов. Использование utf8 будет использовать 3 байта на символ, что приведет к ограничению символов 21 844. НО, если вы используете современную многобайтовую кодировку utf8mb4, которую вы должны использовать! Он поддерживает emojis и другие специальные символы. Он будет использовать 4 байта на символ. Это ограничит количество символов в таблице до 16,383. Обратите внимание, что другие поля, такие как INT, также будут учитываться в этих пределах.

Вывод:

utf8 максимум 21 844 символов

utf8mb4 максимум 16,383 символов

Ответ 6

Вы можете использовать TEXT type, который не ограничен 64 КБ.

Ответ 7

До версии Mysql 5.0.3 Тип данных Varchar может хранить 255 символов, но из 5.0.3 он может хранить 65 535 символов.

НО имеет ограничение на максимальный размер строки 65 535 байт. Это означает, что все столбцы должны быть не более 65535 байт.

В вашем случае возможно, что когда вы пытаетесь установить более 10000, оно превышает более 65 535, а mysql выдаст ошибку.

Для получения дополнительной информации: https://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html

блог с примером: http://goo.gl/Hli6G3

Ответ 8

Максимальный размер MySQL VARCHAR составляет 65 535 байт. Он может хранить 65 535 символов.