Я разработчик PHP, поэтому не будь строгим. У меня большой дамп таблицы ~ 5,5 ГБ. Наш премьер-министр решил создать в нем новую колонку для выполнения новой функции. Таблица InnoDB, так что я попробовал:
Изменить таблицу на экране с помощью блокировки таблицы. Взял ~ 30 часов и ничего. Так что я просто остановил это. Сначала я ошибся, потому что не завершил все транзакции, но во 2-й раз не было мультиблока. Статус был
copy to tmp table
.Поскольку мне также необходимо применить разбиение для этой таблицы, мы решили сделать дамп, переименовать и создать таблицу с тем же именем и новой структурой. Но dump делает строгую копию (по крайней мере, я не нашел что-то еще). Поэтому я добавил, чтобы создать новый столбец
sed
и запросить его. Но начались странные ошибки. Я считаю, что это было вызвано кодировкой. Таблица в utf-8 и файл стали us-ascii послеsed
. Поэтому я получил ошибки (неизвестная команда '\' ') на 30% данных. Так что это тоже плохой путь.
Каковы другие варианты для достижения этой цели и повышения производительности (я могу сделать это с помощью PHP-скрипта, но это заняло целую вечность). Каковы будут показатели INSERT SELECT
в этом случае.
Спасибо за любое продвижение.
SET NAMES utf8
и. Но мнеCOLLATION
кажется, почему 30% данных повреждены послеsed
. Я думаю, что массовая загрузка будет самой быстрой, но, может быть, существует нечто большее, чего мне не хватает. Спасибо Марк