Изменение значения в поле VARCHAR(200) таблицы InnoDB в MySQL

165
25 сентября 2019, 22:10

В 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.

Поясните, пожалуйста.

READ ALSO
Как сделать фоновое изображение таким?

Как сделать фоновое изображение таким?

Часто вижу на сайтах что фоновое изображение имеет какой-то эффект, на фоне которого отчётливо видно текстНе понимаю, то ли это размытие,...

133
не работает animate

не работает animate

Так как Вы не включили в вопрос разметку и стили, сказать, что Вы делаете неправильно, затруднительноВот что, я думаю, Вы хотели сделать:

147
Почему не заполняется DataTable?

Почему не заполняется DataTable?

Так выглядит метод, который возвращает datatable после выполнения процедуры:

148