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.