From https://stackoverflow.com/questions/12774709/mysql-very-slow-for-alter-table-query
MySQL’s ALTER TABLE performance can become a problem with very large tables. MySQL performs most alterations by making an empty table with the desired new structure, inserting all the data from the old table into the new one, and deleting the old table. This can take a very long time, especially if you’re short on memory and the table is large and has lots of indexes. Many people have experience with ALTER TABLE operations that have taken hours or days to complete.
We have experienced this on Messaging Gateway MySQL database when we tried to add a new column to “email” table which has more than 1.4m records, the query seem to be running forever and significantly increased connections count and memory usage.