MySQL 5.6 должен разрешать InnoDB онлайн DDL без какого-либо простоя в этой таблице, и параллельные запросы должны все еще работать в этой таблице при изменении.
ALTER TABLE tee_sizes MODIFY COLUMN `tee-size` enum('small', 'large', 'x-large', 'new-item'),
ALGORITHM=INPLACE, LOCK=NONE;
ALGORITHM=INPLACE, LOCK=NONE
заставит MySQL выполнить на запрошенном уровне параллелизма без простоя.Если ваша версия MySQL не выполняется, то запрошенный уровень параллелизма недоступен, то есть ALGORITHM=INPLACE, LOCK=NONE
необходимо изменить.
см. демо
Отредактировано из-за комментария:
Подождите .. Итак, это вызывает любые блокировки?ALGORITHM = INPLACE, LOCK = NONE заставит MySQL выполнить (если разрешено) без простоя, если ваш MySQL не выполняется, это означает, что это невозможно сделать с помощью ALGORITHM = INPLACE, LOCK = NONE. Это утверждение сбивает с толку.
Нет, он не блокирует копирование / вставку из руководства
Вы можете управлять аспектами операции DDL, используя предложения ALGORITHM и LOCK оператора ALTER TABLE.Эти предложения помещаются в конце оператора, отделенные от спецификаций таблицы и столбца запятыми... Чтобы случайно не сделать таблицу недоступной для чтения, записи или того и другого, укажите в операторе ALTER TABLE предложение, такое как LOCK = NONE` (разрешить чтение и запись) или LOCK = SHARED (разрешить чтение). Операция немедленно останавливается, если запрошенный уровень параллелизма недоступен.