Добавить новый столбец в большой таблице MySQL - PullRequest
13 голосов
/ 19 июня 2009

Какой самый быстрый способ добавить новый столбец в большую таблицу mysql?

Столбец «Изменить таблицу» создает копию полной таблицы, а затем заменяет старую новой таблицей создания. Во время выполнения этого процесса исходная таблица доступна для чтения, но все вставки и обновления останавливаются.

На больших таблицах копирование может занять много времени, есть ли способ уменьшить его?

Ответы [ 3 ]

5 голосов
/ 19 июня 2009

Вы застряли, делая ALTER TABLE. Наилучший способ эффективно справиться с этим - использовать установку MASTER-MASTER.

Вы можете сначала изменить MASTER1 и просто использовать MASTER2 в производстве. Затем вы переключаетесь и делаете прямо противоположное.

2 голосов
/ 19 июня 2009

Не делайте этого вживую на активной системе. Для активной системы делайте это, пока вы выключаете систему для регулярного технического обслуживания.

1 голос
/ 03 августа 2017

Принимая таблицу INNODB:

  1. Копировать {существующую таблицу} в {новую таблицу} без данных (только схема)
  2. Использование команд «Изменить таблицу» для добавления / изменения столбцов в новой таблице (должно работать в одно мгновение)
  3. MYSQLDUMP существующей таблицы (с использованием одной транзакции, --no-drop-table и т. Д.) В файл
  4. импортировать файл дампа в {Новая таблица} (это может занять некоторое время, но старая таблица все еще может использоваться в течение этого периода)
  5. во время периода обслуживания DROP {Старая таблица} и переименовать {Новая таблица} в предыдущую {Старая таблица}.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...