В 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.
Поясните, пожалуйста.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Часто вижу на сайтах что фоновое изображение имеет какой-то эффект, на фоне которого отчётливо видно текстНе понимаю, то ли это размытие,...
Так как Вы не включили в вопрос разметку и стили, сказать, что Вы делаете неправильно, затруднительноВот что, я думаю, Вы хотели сделать:
Так выглядит метод, который возвращает datatable после выполнения процедуры: