Din ALTER TABLE
uttalandet antyder att mysql måste skriva om varje enskild rad i tabellen inklusive den nya kolumnen. Eftersom du har mer än 2 miljoner rader, skulle jag definitivt förvänta mig att det tar en betydande tid, under vilken din server sannolikt mestadels kommer att vara IO-bunden. Du brukar tycka att det är mer presterande att göra följande:
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;
På så sätt lägger du till kolumnen i den tomma tabellen och skriver i princip data i den nya tabellen som du är säker på att ingen annan kommer att titta på utan att låsa så mycket resurser.