我不知道我还能在哪里问这个问题,因此在这里问。我想知道,如果我在使用多个数据库表的页面上强加多个Django过滤器,那么每当用户访问该页面时,都会影响ram的消耗,因为在此之前,只有用户过滤的数据会得到反映。我在基于ubuntu的VM上将django与postgresql一起使用,如果有任何文档可以帮助您了解ram的利用率,请提出建议。
答案 0 :(得分:2)
Django过滤器和查询集是惰性的。实际上,这意味着直到您评估它们才真正访问数据库。引用官方documentation-
在内部,可以构造,过滤,切片和一般传递QuerySet而不实际访问数据库。除非您执行某些操作来评估查询集,否则实际上不会发生数据库活动。
因此,RAM中唯一占用的空间实际上是包含queryset和程序的列表。这是评估查询并从数据库中提取数据的时间,即何时(取决于提取的数据量),内存已满。另外,最好还是看看iterators