在优化ORM查询的同时编写Django应用程序的最佳实践?

时间:2012-10-16 08:49:06

标签: django optimization orm

编写复杂的django应用程序涉及在不同的地方(视图,模板等)中使用ORM对象。但是,设计ORM模型通常在项目开始时完成。在那个阶段很难准确预测数据的查询方式(主要使用的是ForeignKeys)。

我们可以在很多阶段优化ORM的查询数量:

  • select_related() - 在给定的ORM调用中
  • prefetch_related() - 在给定的ORM调用中
  • 覆盖模型ModelManager以预取所有查询的所有相关模型

我通常的优化方法是编写我的整个应用程序,然后使用开发人员工具栏,查看为给定视图生成的查询数量,然后确定它们来自何处以及如何避免它们(使用上面的方法) - 提到的选项)。

但是我发现这种方式容易出错(例如,您可能忘记检查所有视图或其他背景/芹菜/方法)。但是,我发现编写逻辑时也非常难以进行优化(因为我想专注于逻辑,而不是那时的ORM调用)。

所以我的问题是 - 优化ORM查询的最佳实践(最佳时刻)是什么?

1 个答案:

答案 0 :(得分:1)

他们说过早优化是万恶之源。当事情变得缓慢时,你应该开始担心优化(即使我们都知道他们最终会这样做) 使用Django Debug Toolbar手动检查每个视图实际上比例如更自动化的测试更容易出错 第一种方法可以通过django-timelog收集一些指标,然后从较慢的视图开始使用DDT。

相关问题