Единственное решение, которое я могу придумать, чтобы избежать блокировки таблицы long , - это создать новую таблицу с желаемой структурой.Затем используйте INSERT INTO ... SELECT
для заполнения этой таблицы, заново создайте все индексы (включая новый), а затем переименуйте новую таблицу в старую таблицу.
Переименование таблицы может быть сделано в транзакции, так что ни один клиент не заметит этого (хотя это может занять некоторое время, потому что я думаю, что RENAME будет ждать, пока не получит эксклюзивную блокировку).
Вам также придется воссоздавать внешние ключи, ссылающиеся на эту таблицу (не уверен насчет уровня блокировки, участвующего в этом).
Это, конечно, возможно, только если у вас достаточно места дляВы можете хранить полную копию таблицы.