Записей около 4 млн. Не особо много но ощутимо, VDS слабенький, столбец в таблице удаляется, добавляется около 10 минут.
Вопрос 1: можно ли как-то ускорить?
Вопрос 2: что происходит с другими запросами SELECT, INSERT, UPDATE в промежуток времени когда удаляется таблица? Они выполняются, ждут? А если много апдейтов работающих по крону? Там же скопится огромная очередь...
1. Только если добавить проца/памяти. Смотря чего у вас там не хватает при миграции.
2. Даже хуже. Будут или таймауты на запросах или упретесь в максимальное количество соединений с бд.
Что бы избежать - используйте https://www.percona.com/doc/percona-toolkit/2.1/pt...
Я бы на вашем месте больше задавался вопросом - "Зачем с завидной регулярностью нужно добавлять/удалять столбцы?". Остальные вопросы на мой взгляд вторичны. Лучше разберитесь с задачей, требующей такой реализации.
Потому что данные уже есть, а проект ещё на стадии активной разработки. Мы решаем: нам нужна новая метрика (столбец). Или мы рассчитывали предоставить такую метрику но данных для неё на деле нет (удалить столбец).
Дмитрий: Это процесс разработки, причем без проектирования базы данных. Если вы разрабатываете на боевом сервере бд - вам по рукам надо дать хорошенько. Если девелоперский - 10 минут подождете, не самая большая трагедия. Если вы это делаете каждый час и никак не определитесь нужен вам столбец или нет - собираете совещание и решаете нужен или нет. Вы хотите экономить на спичках, вместо того чтобы спроектировать схему и взаимодействие с БД.