gpt4 book ai didi

mysql - 如何使用 MySQL 更改 Rails 中大表的 `id` 列类型

转载 作者:行者123 更新时间:2023-12-02 16:24:14 25 4
gpt4 key购买 nike

将 Rails 中包含 2,000,000,000 多条记录的表上的列从 int(10) 更改为 bigint(8) 的推荐方法是什么:

  1. 在生产环境中运行并面向客户
  2. 不断向表中添加记录
  3. 如上所述, table 很大

这是一个示例迁移,说明了结果应该是什么:

class ChangeTableNameIdType < ActiveRecord::Migration
def change
execute('ALTER TABLE table_name MODIFY COLUMN id BIGINT(8) NOT NULL AUTO_INCREMENT')
end
end

最佳答案

在 Shopify,我们使用了 fork of LHM这允许在系统启动并运行时进行迁移。比要求您使系统脱机的内联迁移要好得多。

它将处理数十亿条记录,但重要的是要了解它将在迁移过程中创建一个并行表,然后切换到新表,因此您需要确保有可用的数据库空间。

具体回答你的观点:

Runs in production and is exposed to customers

是的,这将在生产环境中运行,并且可以在客户使用您的产品时安全地并行运行。

Records are continuously being added to the table

在写入 LHM 表时,新记录将同时写入现有表和 LHM 表。现有表和 LHM 表更新到最新/同步后,您可以切换到 LHM 表,从而完成迁移。

As mentioned above the table is large

处理 100 亿条记录。有在这种规模上使用它的个人经验。它有效。

关于mysql - 如何使用 MySQL 更改 Rails 中大表的 `id` 列类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64860272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com