Задать вопрос
Driver86
@Driver86
Немодератор toster.ru

Как в Innodb хранятся varchar?

Как в Innodb хранятся varchar?
Насколько знаю, вместе с таблицей. Но если происходит обновление поля, на более длинный текст (например, было 'qwe', а стало 'qwerty'), куда записывается "излишек" ('rty')? Если в отличие от char дополнительное место не резервируется (нулями/пробелами), и не получится просто рядом "дописать" 'rty'. Получается, при обновлении varchar разным текстом, текст будет хранится кусками в разных частях таблицы? Ну а при частом изменении разной длинной вообще получается что-то крайне фрагментированное?
  • Вопрос задан
  • 76 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Java-разработчик
    8 месяцев
    Далее
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Решения вопроса 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
varchar имеет фиксированную длину и под него резервируется место. Никаких трудностей.
Ответ написан
Driver86
@Driver86 Автор вопроса
Немодератор toster.ru
для varchar отводится столько места, сколько он занял при первом инсерте. Если в процессе изменений длина увеличивается (но до указанного в определении поля предела), то сначала это увеличение делается за счет зарезервированного на странице места, а когда места не остается - страница расщепляется.
Если фактическая длина уменшается - никаких "сжатий" страниц не делается.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы