MySQL почти во всех случаях перестраивает таблицу во время ALTER **. Это связано с тем, что двигатели на основе строк (т. Е. Все из них) должны сделать это, чтобы сохранить данные в правильном формате для запросов. Это также потому, что вы можете внести много других изменений, которые также потребуют перестройки таблицы (например, изменение индексов, первичных ключей и т. Д.)
Я не знаю, какой движок вы используете, но я буду предполагать MyISAM. MyISAM копирует файл данных, внося необходимые изменения в формат - это относительно быстро и вряд ли займет гораздо больше времени, чем оборудование IO может получить старый файл данных, а новый - на диск.
Восстановление индексов на самом деле является убийцей. В зависимости от того, как вы его настроили, MySQL будет либо: для каждого индекса помещать индексированные столбцы в буфер файлового сервера (который может быть в памяти, но обычно на диске), сортировать, используя свою функцию filesort() (которая делает quicksort путем рекурсивного копирования данных между двумя файлами, если он слишком велик для памяти), а затем построить весь индекс на основе отсортированных данных.
Если он не может выполнить трюк filesort, он будет вести себя так, как если бы вы вставляли INSERT в каждую строку, и по очереди заполняли индексные блоки данными каждой строки. Это очень медленно и приводит к далеким от оптимальных показателям.
Вы можете сказать, что он делает, используя SHOW PROCESSLIST во время процесса. «Ремонт с помощью filesort» хорош, «Ремонт с помощью keycache» - это плохо.
Все это будет использовать AT MOST одно ядро, но иногда может быть связано также с IO (особенно копирование файла данных).
** Есть некоторые исключения, такие как удаление вторичных индексов на таблицах плагинов innodb.
Рассмотрим настройку innodb_log_file_size (но будьте осторожны, см. Http://www.mysqlperformanceblog.com/2011/07/09/how-to-change-innodb_log_file_size-safely/) и innodb_log_buffer_size. Для получения дополнительной информации см. Мой ответ здесь: http://stackoverflow.com/a/12688184/1148030 –