【发布时间】:2020-08-24 06:25:19
【问题描述】:
我有一个 MySQL 数据库,其中包含多个表,每个表都有近 2M 条记录。当我运行更新这些表的迁移时,它非常慢。我尝试将服务器增强到 64 个 CPU 和 240GB RAM(可能真的没必要),但仍然需要很长时间。
有什么方法可以加快迁移速度?
编辑:正如@iklinac 所指出的,我看到这篇文章是关于创建一个新的临时表,然后将数据从旧表迁移到这个新表。有没有“Django 方式”来做到这一点?
【问题讨论】:
-
问题是,如何更新这些表。如果不知道您进行了哪些迁移,则无能为力。
-
@WillemVanOnsem “不知道你做了什么迁移”是什么意思?你的意思是我不知道迁移会做什么样的更新?
-
不,我的意思是您不共享迁移。例如,如果您通过循环执行数据迁移,则确实需要数年时间,但可以使用
.update(..)来提升它。但是您只是说“我有一个迁移”,所以对于这个特定的迁移,我们无法提供太多帮助。 -
@WillemVanOnsem 哦,我明白了。我拥有的迁移都是来自
manage.py makemigrations的 Django 自动生成的迁移,它添加和更改表的字段。我没有对迁移文件进行任何手动更新。这有帮助吗? -
@JudeMaranga:迁移被转换为 SQL 查询。你用
manage.py sqlmigrate appname migrationname检查这些。它将打印它将在数据库上执行的 SQL 查询。
标签: mysql django django-migrations