Twoja ALTER TABLE
Instrukcja oznacza, że mysql będzie musiał przepisać każdy wiersz tabeli, w tym nową kolumnę. Ponieważ masz ponad 2 miliony wierszy, zdecydowanie spodziewam się, że zajmie to dużo czasu, podczas którego twój serwer będzie prawdopodobnie głównie związany z operacjami we/wy. Zwykle uważasz, że skuteczniejsze jest wykonanie następujących czynności:
CREATE TABLE main_table_new LIKE main_table;
ALTER TABLE main_table_new ADD COLUMN location VARCHAR(256);
INSERT INTO main_table_new SELECT *, NULL FROM main_table;
RENAME TABLE main_table TO main_table_old, main_table_new TO main_table;
DROP TABLE main_table_old;
W ten sposób dodajesz kolumnę do pustej tabeli i zasadniczo zapisujesz dane w tej nowej tabeli, na które masz pewność, że nikt inny nie będzie patrzył bez blokowania tak dużej ilości zasobów.