Django 迁移 1100 万行,需要分解

Sam*_*ham 5 python django postgresql django-migrations

我有一个我正在处理的表,它包含大约 1100 万行......我需要在这个表上运行迁移,但是由于 Django 尝试将它全部存储在缓存中,我用完了 ram 或磁盘空间首先,它突然停止。

我很想知道是否有人遇到过这个问题,并提出了一个解决方案,从根本上“分页”迁移可能是一次 10-20k 行的块?

只是为了提供一些背景知识,我正在使用 Django 1.10 和 Postgres 9.4,如果可能的话,我想保持自动化(我仍然认为它可以)

谢谢山姆

Tar*_*syk 5

问题来自 Postgresql,它在添加新列(字段)时重写每一行。

您需要做的是按照以下方式编写自己的数据迁移:

  1. 添加一个带有 的新列null=True。在这种情况下,数据不会被重写,迁移将很快完成。
  2. 迁移它
  3. 添加默认值
  4. 再次迁移它。

这基本上是一个关于如何处理在巨大的 postgres 数据库中添加新行的简单模式。