В mySQL-таблице InnoDB имеется поле типа VARCHAR. В таблице множество записей.
CREATE TABLE `t1`(
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`str` VARCHAR(330) NULL DEFAULT NULL,
# другие поля таблицы
) ENGINE=InnoDB;
Допустим у записи с id=100 в поле VARCHAR содержится строка длинною 100 символов. (для примера будем полагать, что один символ - один байт) Через некоторое время программа изменяет значение в этом поле на
1) более короткую строку
2) более длинную строку
Как будет "физически" хранится эта запись на диске?
В первом случае,я полагаю, что запись в файле таблице останется на своем месте, а незаполненные символы будут пустыми.
А во втором случае строка будет помечена как удаленная и создастся новая строка в конце файла тем самым увеличив размер файла таблицы, а помеченная к удалению "предыдущая версия записи" будет присутствовать в файле до выполнения команды OPTIMIZE TABLE?
Или увеличенная в размере строка VARCHAR будет разбита на две части. Вторая часть допишется в конец файла. Так?
Тот же вопрос, если использовать тип TEXT вместо VARCHAR.
Поясните, пожалуйста.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости