gpt4 book ai didi

django - 删除大型 Django 查询集导致 Apache 内部服务器错误

转载 作者:行者123 更新时间:2023-12-02 22:31:48 25 4
gpt4 key购买 nike

我正在尝试使用以下方法删除大约 200,000 个对象(它们都有多个相关对象,总共大约 2,000,000 个对象):

DataRecord.objects.filter(order=self.order).delete()

但我收到内部服务器错误(大约 20 分钟后),并且没有任何对象被删除。我将 Apache 超时设置为 3600(1 小时),以便为该操作提供足够的时间。

是否有更有效的方法来批量删除大量对象?

最佳答案

似乎最好的解决方案是使用原始查询(参见 https://docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-directly ),但不会触发 pre_deletepost_delete 信号。

随机 ORM 思想:是否对 DataRecord.order 列进行了索引?

编辑:识别列是否容易:查看列是否设置了 db_index 属性,即:

class DataRecord(models.Model):
order = models.IntegerField(_("order"), **db_index=True**)

索引允许快速查找数据,而无需读取整个表。它就像一本书中的索引 - 当您想在其中找到某个单词时,索引将帮助您找到它而无需阅读整本书。

关于django - 删除大型 Django 查询集导致 Apache 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12116452/

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