MySQL предлага избор от машини за съхранение. Физическото съхранение на данни зависи от механизма за съхранение.
MyISAM съхранение на VARCHAR
В MyISAM VARCHAR
s обикновено заемат само действителната дължина на низа плюс байт или два дължина. Това се прави практично от ограничението на дизайна на MyISAM за заключване на таблица, за разлика от възможността за заключване на редове. Последиците от производителността включват по-компактен профил на кеша, но също така и по-сложно (по-бавно) изчисляване на отместванията на записите.
(Всъщност MyISAM ви дава степен на избор между фиксиран размер на физически ред и променливи формати на таблицата с физически размер на редове в зависимост от типовете колони, срещащи се в цялата таблица. Появата на VARCHAR
променя само метода по подразбиране, но наличието на TEXT
blob сили VARCHAR
s в същата таблица, за да използвате и метода с променлива дължина.)
Методът за физическо съхранение е особено важен при индексите, което е различна история от таблиците. MyISAM използва компресия на пространството за и двете CHAR
и VARCHAR
колони, което означава, че по-кратките данни заемат по-малко място в индекса и в двата случая.
InnoDB съхранение на VARCHAR
InnoDB, подобно на повечето други текущи релационни бази данни, използва по-сложен механизъм. VARCHAR
колони, чиято максимална ширина е по-малка от 768 байта, ще се съхраняват на линия, като запазената стая съответства на тази максимална ширина. По-точно тук
:
InnoDB в момента не извършва компресия на пространство в своите индекси, обратното на MyISAM, както е описано по-горе.
Обратно към въпроса
Всичко по-горе обаче е само детайл от внедряването, който може дори да се променя между версиите. Истинската разлика между CHAR
и VARCHAR
е семантичен, както и този между VARCHAR(20)
и VARCHAR(50)
. Като се гарантира, че няма начин да се съхранява низ от 30 знака в VARCHAR(20)
, базата данни прави живота по-лесен и по-добре дефиниран за различни процесори и приложения, които се предполага, че интегрира в решение с предвидимо поведение. Това е голямата работа.
По отношение конкретно на личните имена, този въпрос може да ви даде някои практически насоки. Хората с пълни имена над 70 UTF-8 знака така или иначе са в беда.