嵌套mod的Django静止帧性能

2024-10-02 04:34:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用silk分析了我的Django应用程序,结果发现对于200000个db条目,GET list调用总共需要701ms,其中只有36ms用于查询(我使用prefetch_relatedselect_related以及分页)

因为我假设db查询会占用大部分时间,所以我想知道我是否做错了什么,因为95%的时间都没有花在查询上

我的主要度量模型是嵌套的,如下所示

class Measurement(models.Model):
    filetype = models.ForeignKey(Filetype)
    sensor = models.ForeignKey(Sensor)
    sensorpositions = models.ManyToManyField('Sensorposition')
    experiment = models.ForeignKey(Experiment, related_name = "measurementexperiment")
    data = models.FileField(null=True)

前端需要每个字段都有一个详细的嵌套json输出,因此序列化程序不仅返回pk,还返回外部模型的所有子字段:

class MeasurementSerializer(MeasurementSerializer):
    sensor = SensorDetailSerializer(many=False, read_only=True)
    sensorpositions = SensorpositionSerializer(many=True, read_only=True)
    experiment = ExperimentDetailForMeasurementSerializer(many=False, read_only=True)
    filetype = FiletypeSerializer(many=False, read_only=True)

class ExperimentDetailForMeasurementSerializer(ExperimentSerializer):
    persons = PersonSerializer(many=True, read_only=True)
    conditions = ConditionSerializer(many=True, read_only=True)
    location = LocationSerializer(many=False, read_only=True)
    layout = LayoutSerializer(many=False, read_only=True)

那么,我只是因为嵌套序列化而浪费了很多时间,还是像701ms那样的响应时间很正常


Tags: 模型falsetrueonlyreaddbmodels时间

热门问题