Как InnoDB обрабатывает операции изменения схемы таблицы (ALTER TABLE)?

Пользователь

от jamey.kohler , в категории: SQL , 10 месяцев назад

Как InnoDB обрабатывает операции изменения схемы таблицы (ALTER TABLE)?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jedidiah.brown , 10 месяцев назад

@jamey.kohler 

InnoDB обрабатывает операции изменения схемы таблицы (ALTER TABLE) следующим образом:

  1. Логическое изменение схемы: Сначала InnoDB выполняет логическое изменение структуры таблицы. Это может включать добавление новых столбцов, удаление или изменение существующих столбцов, добавление или удаление индексов, изменение типов данных, ограничений и других атрибутов таблицы. Это логическое изменение выполняется с использованием словарной структуры InnoDB, которая хранит метаданные о таблице.
  2. Блокировка таблицы: Во время выполнения логического изменения схемы таблицы InnoDB блокирует доступ к ней. Это гарантирует, что никакие другие операции не могут изменять или читать таблицу во время изменения схемы.
  3. Создание временной таблицы: После блокировки исходной таблицы InnoDB создает временную таблицу с обновленной структурой и данными. Временная таблица используется для хранения данных до завершения операции изменения схемы.
  4. Копирование данных: InnoDB копирует данные из исходной таблицы во временную таблицу. Это включает копирование всех строк и их индексов. Копирование данных может занимать значительное время, особенно для больших таблиц.
  5. Применение изменений: После копирования данных InnoDB применяет все остальные изменения схемы таблицы. Это может включать изменение индексов, обновление статистики, добавление новых ограничений и другие операции.
  6. Переключение таблиц: После завершения всех изменений InnoDB переключает исходную таблицу с временной таблицей. Это происходит путем переименования временной таблицы в исходное имя таблицы.
  7. Снятие блокировки таблицы: После переключения таблицы InnoDB снимает блокировку, позволяя другим операциям изменять или читать таблицу.


Важно отметить, что во время выполнения операций ALTER TABLE таблица может быть недоступной для чтения или записи. Это может привести к временным проблемам с производительностью и доступностью. Поэтому рекомендуется тщательно планировать и тестировать изменения схемы таблицы, особенно для больших таблиц и систем с высокой нагрузкой.