ALTER TABLE
của bạn câu lệnh ngụ ý mysql sẽ phải viết lại mọi hàng của bảng bao gồm cả cột mới. Vì bạn có hơn 2 triệu hàng, tôi chắc chắn sẽ mất một khoảng thời gian đáng kể, trong thời gian đó máy chủ của bạn có thể chủ yếu bị ràng buộc IO. Bạn thường thấy nó hoạt động hiệu quả hơn khi thực hiện những điều sau:
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;
Bằng cách này, bạn thêm cột trên bảng trống và về cơ bản ghi dữ liệu vào bảng mới đó mà bạn chắc chắn rằng không ai khác sẽ nhìn vào mà không cần khóa nhiều tài nguyên.