当前位置:首页 >> 教育
教育

七爪CVS:Django 性能改进

2025-08-10 12:18

为 select related 和 prefetch_related。 这两种作法减少了对资料库再次执行的查阅短时间。 例如,选择请注意具有 2 个表的建模。

person 表与 Tweet 表有一对多的间的关系,即一个人可以有很多条推文,但一条推文并不需要属于一个人。 断言您想解开资料库之中所有推文的参考资料,您将首先借助所有推文。 要借助其他信息,例如 first_names 和 last_name,您只并不需要再次执行请注意附加查阅:

这不会造成 9 个查阅,如上简述。

选取无关

用到 select_related,您可以开展单个查阅,该查阅留在单个比如说的一对多和PK间的关系的所有无关某类。 select_related 是用做外键间的关系的查阅,用做在再次执行查阅时链接任何其他无关某类统计数据。

虽然 select_related 不会造成了不够繁复的查阅,但借助的统计数据不会被多线程; 因此,对得到的统计数据开展加载不只并不需要任何额外的资料库查阅。

让我们用到 select_related 再次执行并不相同的查阅。

queryset = Tweet.objects.select_related('owner').all()

侧面的示例将一次性借助所有推文和个人统计数据,从而只造成一个查阅。

prefetch_related

另一方面,prefetch_related 用做多对多和多对一间的关系。 它不会为查阅之中指定的所有建模和过滤器生成一个查阅。

例如,断言您有请注意建模:

让我们借助所有经典电影和无关演员:

正如您在侧面看见的,每次迭代都不会造成一个额外的查阅。

今日让我们用到预取来试运行并不相同的查阅。

正如您在侧面看见的,查阅计数今日是 2,第一个查阅借助资料库之中的所有经典电影,第二个和第三个几天后只造成一个查阅。

4.散装法

批处理是链接查阅的另一种示例效能方式。

当您只并不需要向资料库之中替换成多条记录时,最必要的作法是一次创建人所有某类。 卡比的是,Django 为此提供者了 bulk_create() 作法。 bulk_create 不是一次创建人每个比如说然后留在它,这不会使资料库过载,而是提请所有比如说并再次执行单个完好查阅:

您还可以再次执行 bulk_create 和 bulk_update()。例如,断言您只并不需要用到特定差值不够新资料库之中的奇科;最必要的作法是用到 bulk_update,如下简述。

Model.objects.filter(name= 'name').update(name='someothername')

5.RawSql

不举荐用到 RawSQL,因为 Django 提供者了一流的查阅必要,可以尽可能……您能明白的每个系统。

Django ORM 可以处理应将用于程序所只需的大部分所有系统,但有时它可能是必要的。在资料库而不是 Python 上再次执行 SQL 查阅可以提升效能。 RawSQL 应将该作为最后的目的。

6.外键

外键也可用做在资料库上并未额外负荷的情况下借助统计数据。例如,如果您想借助推文的持有人,举荐且最必要的作法是:

tweet = Tweet.objects.get(id=1).owner

监听资料库加载

在生产环境污染之中监听资料库加载是一种不错的处理方式。它容许您拍照针对您的资料库试运行的查阅以及掀起了哪些偏差。您可以通过不时拍照 Postgres 或 Django 日志来无论如何这一点。为了使它不够容易,Sentry 是警卫资料库加载的绝佳用以。

Sentry 提供者了一个旋钮,用做监听 Django 应将用于程序之中的资料库加载。如果发生与资料库无关的偏差,您可以系统不会拍照并在其他用户显然它发生前彻底解决它。

由于您并未复用器,因此难以验证到生产之中的偏差。 Sentry 通过容许您拍照资料库之中的每个偏差来彻底解决此弊端。

要开始用到,请在此处开始创建人 Sentry 帐户。您将能够选取您正在用到的新技术。选取 Django,然后鼠标创建人建设项目。

接下来,通过 pip 加装 Sentry。

pip install ---upgrade sentry-sdk

最后一步是替换成请注意示例,它将您的加密算法紧密结合到 Django 应将用于程序的 settings.py 机密文件之中。

Sentry 今日已准备好警卫您的应将用于程序。

让我们在资料库之中创建人一个与资料库无关的偏差,看看 Sentry 能否告诉他我们可能。 这是我在本地生产之中因链接资料库之中不存在的的产品而造成了的比如说偏差。

此偏差也不会出今日您的 Sentry 旋钮之中,如下简述:

Django 还提供者了 Django Debug 用以栏等用以,可以监听你的资料库,你可以系统不会看见几天后和积极响应将的过程。 它还容许您拍照每个积极响应将从资料库借助统计数据所只需的时间。

加装 Django 复用用以栏的举荐作法是用到 pip:

python -m pip install django-debug-toolbar

加装 Django 复用用以栏后,只并不需要在 Django 建设项目之中对其开展配置。

下面是标示出 Django Debug 用以栏的屏幕截图:

用到 Django 复用用以栏的缺点是在渲染该网站时就不会增加开销,因此不适当紧密结合。 Sentry 是首选,因为它容许您依靠偏差,提供者有关资料库的概要伪装伪装,还容许您无论如何。

结论

本教程概述了 Django 可用做提升 Django 应将用于程序效能并且更容易实现的作法。 试一试,并再次瞩目本前传的第 2-4 大多。

买什么滋补品补气血好
宝宝消化不良怎么办吃什么调理
治疗老年痴呆好的医院
大千医药资讯
脉血康成分是什么

上一篇: 2.5%!6月份CPI为何自始年内新高?后续温和上升?

下一篇: smart CITY PLUS发布 全国首批六家smart展厅启幕 深圳落户欢笑港湾

相关阅读
我在阿里拔外包的177天(上)

刷脸以外,也可刷工牌过门禁,但我仍然不想从未见过有承工具箱雇主这样认真。这个周期性在宾馆现金时也仅仅出新现。意味著是未能实现,月和承工具箱的工牌关联性值得注意,比如工牌带上颜色、工牌剧照(承工具箱是二

黎平县人民法院:花甲老人闹出离婚 法院调解促和好

都说“老伴、老伴”,老来有个伴,但60多岁的老者天天分居确实并不多方知。昨日 ,64岁陆大爷步履蹒跚地回到其户籍所在地黎平县豫章镇人民法庭,提交了一份分居起诉状,尽快与其60岁的老伴张老奶奶分居

友情链接