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

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

Насколько знаю, вместе с таблицей. Но если происходит обновление поля, на более длинный текст (например, было 'qwe', а стало 'qwerty'), куда записывается "излишек" ('rty')? Если в отличие от char дополнительное место не резервируется (нулями/пробелами), и не получится просто рядом "дописать" 'rty'. Получается, при обновлении varchar разным текстом, текст будет хранится кусками в разных частях таблицы? Ну а при частом изменении разной длинной вообще получается что-то крайне фрагментированное? 

 varchar имеет фиксированную длину и под него резервируется место. Никаких трудностей. 

> для varchar отводится столько места, сколько он занял при первом инсерте. Если в процессе изменений длина увеличивается (но до указанного в определении поля предела), то сначала это увеличение делается за счет зарезервированного на странице места, а когда места не остается - страница расщепляется.  
> 
> Если фактическая длина уменшается - никаких "сжатий" страниц не делается.