Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MySQL更改Rails中大型表的'id'列类型_Mysql_Ruby On Rails_Ruby_Migration - Fatal编程技术网

如何使用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;但是,建议在运行时将应用程序置于维护模式,以避免任何潜在冲突。