Spec-Zone.ru › MySQL 9.2

17.12 InnoDB и онлайн DDL

  • 17.12.1 Операции онлайн DDL
  • 17.12.2 Производительность и одновременность онлайн DDL
  • 17.12.3 Требования к дисковому пространству для онлайн DDL
  • 17.12.4 Управление памятью для онлайн DDL
  • 17.12.5 Настройка параллельных потоков для операций онлайн DDL
  • 17.12.6 Упрощение инструкций DDL с помощью онлайн DDL
  • 17.12.7 Условия сбоя онлайн DDL
  • 17.12.8 Ограничения онлайн DDL

Функция онлайн DDL обеспечивает поддержку мгновенных и на месте изменений таблиц и одновременных операций DML. Преимущества этой функции включают:

  • Улучшенная отзывчивость и доступность в загруженных производственных средах, где временная недоступность таблицы на несколько минут или часов нецелесообразна.

  • Для операций на месте возможность регулировать баланс между производительностью и одновременностью во время операций DDL с помощью условия LOCK. См. Условие LOCK.

  • Меньшее использование дискового пространства и снижение нагрузки на ввод-вывод по сравнению с методом копирования таблиц.

Обычно для активации онлайн DDL ничего специального делать не нужно. По умолчанию MySQL выполняет операцию мгновенно или на месте, в зависимости от возможностей, с минимальным возможным блокированием.

Вы можете управлять аспектами операции DDL, используя условия ALGORITHM и LOCK инструкции ALTER TABLE. Эти условия помещаются в конце инструкции, разделенные запятыми от спецификаций таблицы и столбцов. Например:

ALTER TABLE tbl_name ADD PRIMARY KEY (column), ALGORITHM=INPLACE;

Условие LOCK может использоваться для операций, выполняемых на месте, и полезно для тонкой настройки уровня одновременного доступа к таблице во время операций. Только LOCK=DEFAULT поддерживается для операций, выполняемых мгновенно. Условие ALGORITHM предназначено в первую очередь для сравнения производительности и как резервное поведение старого копирования таблицы на случай возникновения проблем. Например:

  • Чтобы случайно не сделать таблицу недоступной для чтения, записи или того и другого во время операции ALTER TABLE на месте, укажите условие в инструкции ALTER TABLE, например, LOCK=NONE (разрешить чтение и запись) или LOCK=SHARED (разрешить чтение). Операция немедленно прерывается, если необходимый уровень одновременности недоступен.

  • Для сравнения производительности алгоритмов выполните инструкцию с ALGORITHM=INSTANT, ALGORITHM=INPLACE и ALGORITHM=COPY. Также можно выполнить инструкцию, включив опцию конфигурации old_alter_table, чтобы принудительно использовать ALGORITHM=COPY.

  • Чтобы избежать блокировки сервера операцией ALTER TABLE, копирующей таблицу, добавьте ALGORITHM=INSTANT или ALGORITHM=INPLACE. Инструкция немедленно прерывается, если указанный алгоритм не может быть использован.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-online-ddl.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API