我的网页加载速度非常慢,所以我安装了Django Debug Toolbar。我对此非常陌生,所以我试图找出我能用它做些什么。
我可以看到数据库在205毫秒内完成了264次查询。看起来很高兴。我非常确定我可以通过添加一些索引并编写更好的查询来减少这种情况。但我的问题是:什么是好的"应该试图在这里打的号码?什么被普遍接受为"足够快"进一步的优化并不值得。 50ms的? 20ms的?
同样在同一页面上,它在用户CPU中显示2500毫秒。这对我来说听起来很糟糕,我感到惊讶它比数据库高得多,我认为这是瓶颈。这可能表明我试图在python代码而不是在数据库层做太多事情吗?减少SQL查询的数量会有助于CPU吗? (在查询之间等待?)。我应该瞄准的还有一些众所周知的目标响应时间。
我正在寻找客户的快速反应。现在,当我点击时,我可以感受到一个怀孕的停顿"在页面加载之前。
答案 0 :(得分:1)
默认情况下,访问相关模型字段会导致每行每个模型一次额外查询。查看select_related()
和prefetch_related()
,这通常会减少查询次数并加快速度。我认为调试工具栏会显示实际查询,如果没有,需要在进行任何查询优化之前启用sql日志。一旦您将查询数量减少到最少(每个pow没有额外查询),查找最慢的查询并使用EXPLAIN sql语法查看是否正在使用索引,这是另一个可能变慢的区域,尤其是大数据。
通常数据库是瓶颈,除非您在代码中进行一些主要的循环。如果您认为python代码很慢,那么需要对其进行分析,否则只是猜测。