- mysql/
- 如何使用MySQL更改Rails中大型表的'id'列类型
如何使用MySQL更改Rails中大型表的'id'列类型
如何使用MySQL更改Rails中大型表的'id'列类型,mysql,ruby-on-rails,ruby,migration,Mysql,Ruby On Rails,Ruby,Migration,在Rails中有2000000000+条记录的表上,建议采用什么方法将列从int10更改为bigint8,考虑到:
在生产中运行并向客户公开
记录不断地被添加到表中
如上所述,该表很大
下面是一个示例迁移,说明了结果应该是什么:
类ChangeTableNameIdType
在Rails中有2000000000+条记录的表上,建议采用什么方法将列从int10更改为bigint8,考虑到:
在生产中运行并向客户公开
记录不断地被添加到表中
如上所述,该表很大
下面是一个示例迁移,说明了结果应该是什么:
类ChangeTableNameIdType
它将处理数十亿条记录,但重要的是要了解它将在迁移过程中创建一个并行表,然后切换到新表,以便确保有可用的数据库空间
具体回答您的观点:
在生产中运行并向客户公开
是的,这将在生产中运行,并且可以在客户使用您的产品时安全地并行运行
记录不断地被添加到表中
写入LHM表时,新记录同时写入现有表和LHM表。一旦现有表和LHM表更新为最新/同步,您就可以切换到LHM表,从而完成迁移
如上所述,该表很大
在上百亿条记录上工作。有在这种规模上使用它的个人经验。它可以工作。在Shopify,我们使用了一种允许在系统启动和运行时进行迁移的方法。比要求系统脱机的内联迁移要好得多
它将处理数十亿条记录,但重要的是要了解它将在迁移过程中创建一个并行表,然后切换到新表,以便确保有可用的数据库空间
具体回答您的观点:
在生产中运行并向客户公开
是的,这将在生产中运行,并且可以在客户使用您的产品时安全地并行运行
记录不断地被添加到表中
写入LHM表时,新记录同时写入现有表和LHM表。一旦现有表和LHM表更新为最新/同步,您就可以切换到LHM表,从而完成迁移
如上所述,该表很大
在上百亿条记录上工作。有在这种规模上使用它的个人经验。它可以工作。只需键入change\u column:table\u name,:id,:bigint;但是,建议在运行时将应用程序置于维护模式,以避免任何潜在的冲突。应该能够只键入change\u column:table\u name,:id,:bigint;但是,建议在运行时将应用程序置于维护模式,以避免任何潜在冲突。