Spec-Zone.ru › MySQL 5.7

14.13 InnoDB и онлайн DDL

  • 14.13.1 Операции онлайн DDL
  • 14.13.2 Производительность и конкурентность онлайн DDL
  • 14.13.3 Требования к дисковому пространству онлайн DDL
  • 14.13.4 Упрощение команд DDL с онлайн DDL
  • 14.13.5 Условия сбоя онлайн DDL
  • 14.13.6 Ограничения онлайн DDL

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

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

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

  • Меньшее потребление дискового пространства и I/O-накладные расходы по сравнению с методом копирования таблицы.

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

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

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

Предложение LOCK полезно для точной настройки степени одновременного доступа к таблице. Предложение ALGORITHM предназначено в основном для сравнения производительности и как резервного варианта для устаревшего поведения копирования таблицы, если у вас возникнут какие-либо проблемы. Например:

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

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

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

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

Spec-Zone.ru

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