Django在删除表中的所有记录后会缓慢更新



我使用清除了一个表

RulesUsed.objects.all().delete()

表中大约有35000条记录(在所有表中总共有45000条记录的数据库中(。

python manage.py dumpdata --exclude auth.permission --exclude contenttypes > db_input.json

dumppdate从删除前的17秒变为删除后的19分钟。

我已经尝试过重建容器,并从dumppdatea中用json文件加载数据——所以(现在(空表中没有数据。新数据库上的dumppdate时间相同--19分钟。

python manage.py loaddata --ignorenonexistent /scripts/db_input.json

我觉得我误解了一些东西,有一些关系使事情变慢了。

我试着从指挥线上解围,同样的结果是19分钟;

python manage.py shell
from appname.models import RulesUsed
RulesUsed.objects.all().delete() 

表是另一个表的子表,模型是;

class RulesUsed(models.Model):
hs_input = models.ForeignKey(
hs_input,
on_delete=models.CASCADE,
related_name='rules_used'
)
Rule_Type = models.CharField(max_length=50)
Rule = models.CharField(max_length=50)
Value = models.CharField(max_length=256)
Rule_Comment = models.CharField(max_length=100)
class Meta:
ordering = ['hs_input','Rule_Type','Rule']
def __str__(self):
return f'{self.hs_input} : {self.Rule_Type} : {self.Rule} : {self.Value}'
def as_dict(self):
return {'id': self.hs_input,
'Rule type' : self.Rule_Type,
'Rule' :  self.Rule,
'Value' :  self.Value,
'Rule comment' :  self.Rule_Comment
}

数据库是Postgres。Python 3.8。Django 2.2.5。在Docker容器中运行。

使用

--output OUTPUT, -o OUTPUT¶

指定要将序列化数据写入的文件。默认情况下,数据将进入标准输出。

root@812e9c4b1e07:/estimate# time python manage.py dumpdata --exclude auth.permission --exclude contenttypes --format=yaml --output  db_20201201_1730.yaml
DEBUG:asyncio:Using selector: EpollSelector
[...........................................................................]
real    0m13.927s
user    0m12.194s
sys 0m0.542s
root@812e9c4b1e07:/estimate# time python manage.py dumpdata --exclude auth.permission --exclude contenttypes --format=json --output  db_20201201_1730.json
DEBUG:asyncio:Using selector: EpollSelector
[...........................................................................]
real    0m7.636s
user    0m5.375s
sys 0m0.385s
root@812e9c4b1e07:/estimate# time python manage.py dumpdata --exclude auth.permission --exclude contenttypes --format=json > db_20201201_1745.json
DEBUG:asyncio:Using selector: EpollSelector
real    21m46.728s
user    0m59.013s
sys 1m13.793s
root@812e9c4b1e07:/estimate#

最新更新