我有一个1亿行的表,添加一列需要几个小时,更不用说运行更复杂的查询了。如何加快速度?试着运行这个:
Alter Table diablo add NGAGE_URN varchar(100) FIRST;
odopli941#
使用pt-online-schema-change或我前面描述的手动方法。
nuypyhwy2#
Mysql在添加列时速度慢是出了名的。我见过它在几亿行上花了6个小时。更大的问题是在修改过程中,表被独占锁定,所以在修改过程中你是离线的。创建一个新表,用旧数据不断填充它。当你几乎是最新的,关闭你的应用程序,复制剩余的行,重命名表,使新表使用旧名称,然后你就可以开始了。停机时间:几分钟。您将不得不处理在您开始移动数据后发生的更新,因此timestamp或类似命令将在此有所帮助。
timestamp
lyr7nygr3#
创建一个包含该列的新表。将旧表中的所有记录插入其中。删除旧表。将新表重命名为正确的名称。
3条答案
按热度按时间odopli941#
使用pt-online-schema-change或我前面描述的手动方法。
nuypyhwy2#
Mysql在添加列时速度慢是出了名的。我见过它在几亿行上花了6个小时。更大的问题是在修改过程中,表被独占锁定,所以在修改过程中你是离线的。
创建一个新表,用旧数据不断填充它。当你几乎是最新的,关闭你的应用程序,复制剩余的行,重命名表,使新表使用旧名称,然后你就可以开始了。停机时间:几分钟。
您将不得不处理在您开始移动数据后发生的更新,因此
timestamp
或类似命令将在此有所帮助。lyr7nygr3#
创建一个包含该列的新表。将旧表中的所有记录插入其中。删除旧表。将新表重命名为正确的名称。