In most cases, ALTER TABLE works by making a temporary copy of the original table. The alteration is performed on the copy, and then the original table is deleted and the new one is renamed. While ALTER TABLE is executing, the original table is readable by other sessions. Updates and writes to the table are stalled until the new table is ready, and then are automatically redirected to the new table without any failed updates.
[…]
If you use any option to ALTER TABLE other than RENAME, MySQL always creates a temporary table, even if the data wouldn’t strictly need to be copied (such as when you change the name of a column).