ALTER TABLE ADD COLUMN 需要很长时间

2023-12-30

我只是想将一个名为“location”的列添加到数据库中的表(main_table)中。我运行的命令是

ALTER TABLE main_table ADD COLUMN location varchar (256);

main_table 包含 > 2,000,000 行。持续运行了2个多小时,仍未完成。

我尝试使用mytop监视该数据库的活动以确保查询没有被其他查询进程锁定,但似乎没有。应该需要那么长时间吗?实际上,我只是在运行此命令之前重新启动了机器。现在这个命令仍然在运行。我不知道该怎么办。


Your ALTER TABLE语句意味着 mysql 将必须重写表的每一行,包括新列。由于您有超过 200 万行,我肯定会预计这会花费大量时间,在此期间您的服务器可能主要受 IO 限制。您通常会发现执行以下操作的性能更高:

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;

通过这种方式,您可以在空表上添加列,并且基本上将数据写入该新表中,您确信没有其他人会在不锁定尽可能多资源的情况下查看该数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ALTER TABLE ADD COLUMN 需要很长时间 的相关文章

随机推荐