我试图将列添加到超过2500万行的mysql表中。我正在运行sql命令
ALTER TABLE `table_name` ADD COLUMN `column_name` varchar(128) NULL DEFAULT NULL;
这是使用mysql命令行应用程序运行的。
每次我尝试运行它都需要几个小时然后我才会收到错误
错误2013(HY000):查询期间与MySQL服务器的连接丢失
数据库在AWS上的RDS实例中运行,并检查监控统计信息,内存或磁盘空间都没有用尽。
还有什么我可以尝试将此列添加到表中吗?
答案 0 :(得分:0)
检查您的内存使用情况,或者更可能是您的磁盘使用情况(在此过程中是否有足够的可用空间?)。更改表可能需要大量内存或表的磁盘上的副本。在您的特定情况下,更改alter算法from INPLACE
to COPY
可能会更快。
您也可能达到innodb_online_alter_log_max_size
限制,但在这种情况下,只有查询失败,而不是整个服务器。可能由于ROLLBACK
而导致崩溃,而不是操作本身。
最后,一些应用程序配置或托管服务器取消了花费太长时间的查询/ http请求,我建议您在命令行客户端上执行相同的查询以进行测试。