@Dudarev

Как быстро добавить новую колонку в большую таблицу (4млн+ строк)?

Есть сервер БД mysql (5.5.40), там таблица весом ~500 мб, в ней ~4 300 000 записей.

Задача: добавить новую колонку.

Вариант решения №1
1. Сделать копию структуры tablename в tablename_copy
2. В tablename_copy добавить колонку
3. Сделать instert данных из tablename в tablename_copy
4. Переименовать tablename в tablename_old
5. Переименовать tablename_copy в tablename

Возможно сделать это по-другому?
Сколько должно занимать времени добавление новой колонки "в лоб"?
  • Вопрос задан
  • 1580 просмотров
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Обновитель до mysql 5.6. Там alter table появился уже неблокирующий: https://dev.mysql.com/doc/refman/5.6/en/innodb-onl...
Ответ написан
Комментировать
@MinamotoSoft
4млн строк - это не много. Если конечно там не 100 столбцов и столько же индексов.
Движок таблицы то какой??
В любом случае с офлайном можно (наверное самый быстрый способ) это ваш вариант перечисленный в вопросе с одним отличием. Пунк 3 заменить на mysqldump с последующей корректировкой "шапки" дампа в соответствии с измененной структурой новой таблицы, дропнуть исходную и отресторить таблицу в новом виде (переименовывать ничего не надо). Из практики использования мускула на слабых серверах с ограниченными ресурсами могу сказать, что быстрее чем дамп - никакая другая процедура такие манипуляции не делает.
Ответ написан
Ваш ответ на вопрос

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

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