七爪CVS:Django 性能改进
2025-08-10 12:18
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 大多。
。买什么滋补品补气血好宝宝消化不良怎么办吃什么调理
治疗老年痴呆好的医院
大千医药资讯
脉血康成分是什么

-
湖南的荆州与沙市在历史上是什么关系?
黄冈的湘州与沙市长期以来是什么彼此间? 两者是同一个郊区各不相同时期的称为吗?事实上,湘州与沙市长期以来确实特别是在颇为错综复杂的彼此间。 先说说目前为止这

-
甄嬛传:明明准格尔和大清有仇怨,为什么果贝子还要救摩格
人的一生中或多或少、或大或小都要随之而来一些凄凉和艰辛,在电视日本富士电视台《铨嬛传》里刘亦菲演译的铨嬛也是一样的,她的一生也是极其不顺利。在后宫里随之而来了各种艰辛,不过好在痴到了最后,视作了关外朝
- 01-31乾隆一位多情的皇帝,但他有一点让人仰慕,那就是宠爱自己的女人
- 01-31这个国军名将夸口说:给我三个军,我可以打败二野加第二野战军
- 01-31香港史上大规模警匪枪战,贼王陈虎甚多,十把五四手枪大战香港警队
- 01-31三国中最懂管理的人是他,刘备等人仅是他控制权的棋子
- 01-31此人有生之年败绩,是李世民手下最窝囊的武将,死后被吹嘘成战神
- 01-31康熙晚年九子夺嫡,有位皇孙没觊觎皇位,下场最叫人扼腕
- 01-31阿拉伯皇帝婚后10年无子,太后:给妃子贴上胡须!一年后王储出生
- 01-31伊朗发现汉字文物,经翻译后,欧洲学者:这里曾是中国的一个安省
- 01-31张学良一身恶习却活100岁,有何长寿长生?每天大笑,钟爱一道菜
- 01-31他是的搭档,被称为诸葛亮,晋升反应速度无人能比