在mysql上进行数据库迁移的最佳解决方案?

时间:2013-03-27 07:09:12

标签: mysql database database-migration rails-migrations

我目前在进行迁移时遇到一个问题,特别是在包含数百万条记录的现有表中添加新字段需要很长时间才能完成。所以我想知道有什么特殊的技巧让它快速迁移吗?

1 个答案:

答案 0 :(得分:0)

要在不锁定表的情况下执行此操作,您可以执行的操作是创建具有正确列的新表,从旧表中选择数据,重命名旧表,重命名新表,删除“旧重命名表”

有些像这样;

CREATE TABLE `table_new` LIKE `table`;
ALTER TABLE `table_new` ADD COLUMN ...;
ALTER TABLE `table_new` ADD COLUMN ...;
ALTER TABLE `table_new` ADD COLUMN ...;
INSERT INTO `table_new` SELECT x, y, z, 'newcol', 'newcol2', 'newcol3' FROM `table`
RENAME TABLE `table` TO `table_old`;
RENAME TABLE `table_new` TO `table`;
-- DROP TABLE `table_old` -- Might just leave this out for now, who knows...

要考虑的另一件事可能是索引,为插入关闭它并在插入后重新启用它们,这样它们就不必一直重新计算。