Для этого есть исторические причины. MySQL был разработан 20 лет назад, используя идеи и аппаратные и программные ограничения того времени. 32-битное оборудование и Linux были чем-то относительно новым в 1995 году. Обычный объем оперативной памяти, установленный на настольном компьютере, составлял где-то около 4-8 МБ. Серверы имели 16 или 32 МБ.
Идеи дизайна базы данных, которые были реализованы, были еще 20 лет (или более), когда ограничения на аппаратное и программное обеспечение были еще сильнее (компьютерные программы, используемые для запуска в нескольких сотнях килобайт).
В то время существовало два разных типа для хранения строк в базах данных: CHAR
и VARCHAR
. Они все еще существуют, но различия между ними размываются каждый день. Значения столбцов CHAR
имели фиксированную длину, тогда как VARCHAR
использовали переменную длину, не превышающую максимальную длину, объявленную при создании столбца. (Есть и другие различия, касающиеся обработки пробельных символов, но они не имеют отношения к обсуждению).
Существует несколько причин, по которым были созданы строковые строки с фиксированной длиной и переменной длиной. Хотя переменная длина кажется лучше, потому что она не пустая, данные строковых столбцов фиксированной длины могут храниться в том же месте, что и данные других типов данных фиксированной длины (целые числа, даты и т. Д.). Наличие одинаковой длины для всех записей таблицы очень важно на низком уровне, потому что она обеспечивает постоянное время для поиска и извлечения строки в хранилище, учитывая номер строки (предоставляемый индексом). Строки переменной длины не могут обеспечить эту функциональность, поэтому они были сохранены в другом месте, используя другой способ их извлечения. Другое место означает, что дополнительный диск считывается, чтобы получить их в память, и это требует времени. Как строковые, так и переменные длины имеют преимущества и недостатки.
Что касается размеров, еще в 80-е годы (и до этого) в RDBMSes, используемые для реализации только CHAR
/VARCHAR
(макс. 255 байт) и TEXT
. Для большинства систем баз данных в то время максимальная длина поля TEXT
не превышала 64 КБ.
MySQL реализовал типы данных, используемые существующими системами баз данных в 1995 году и расширил их.
Благодаря аппаратным улучшениям и сокращению стоимости хранения в ГБ в течение последних 20-25 лет, технические причины, породившее существование CHAR
и VARCHAR
строковых типов и их различные ароматы размера стали меньше и менее важными. Как следствие, MySQL объединил свою внутреннюю обработку и хранение, как вы отметили в своей документации.
Посмотрите на это [сообщение] (http://stackoverflow.com/questions/7755629/varchar255-vs-tinytext-tinyblob-and-varchar65535-vs-blob-text) – 1000111
@ 1000111 Я понимаю различия. Я хочу знать * почему *. –