2024-06-01 06:22:40 发布
网友
我在Django Admin中的一些视图加载时间太长。 调试Django管理视图以查看什么是消耗周期的最佳方法是什么?
我也在Django管理员的特定模型中看到过这一点,如果它们的表非常大(几百万条记录可以做到这一点),并且表引擎是MySQL的InnoDB。我花了一段时间才想出解决办法,让我的Django管理员再次哼唱100米以上的记录。根问题的结果是页面加载时的查询开销很大,而且每当我使用ModelAdmin中的一个查询时,搜索查询的构造也很差。
我把我所有的解决方案都记录在这里,以便有朝一日它们可以帮助一个身处困境的Django er同胞:http://craiglabenz.me/2013/06/12/how-i-made-django-admin-scale/
正如rantanplan所评论的,django debug toolbar是开始分析的最简单的方法(显示了在页面加载时执行的所有查询、它们的解释、它们的执行时间等)。您还可以在这里查看有关分析慢速django安装的问题: How to profile django application with respect to execution time?
这个问题提到了hotshot的使用,Django的Wiki在profiling django下也提到了hotshot。
如果将Django与MySQL一起使用,那么MySQL中存在一个内部连接优化的bug。如果您尝试在Admin.list_display中使用外键,Django将生成具有排序和内部连接的查询,这在MySQL中非常慢。
Admin.list_display
有两种解决方案:
使用django mysql修复后端:https://pypi.python.org/pypi/django-mysql-fix
重写AdminChangeList中的get_query_set-删除select_related并设置prefetch_related字段-更多详细信息请参见我的另一个答案:https://stackoverflow.com/a/23097385/1178806
get_query_set
select_related
prefetch_related
我也在Django管理员的特定模型中看到过这一点,如果它们的表非常大(几百万条记录可以做到这一点),并且表引擎是MySQL的InnoDB。我花了一段时间才想出解决办法,让我的Django管理员再次哼唱100米以上的记录。根问题的结果是页面加载时的查询开销很大,而且每当我使用ModelAdmin中的一个查询时,搜索查询的构造也很差。
我把我所有的解决方案都记录在这里,以便有朝一日它们可以帮助一个身处困境的Django er同胞:http://craiglabenz.me/2013/06/12/how-i-made-django-admin-scale/
正如rantanplan所评论的,django debug toolbar是开始分析的最简单的方法(显示了在页面加载时执行的所有查询、它们的解释、它们的执行时间等)。您还可以在这里查看有关分析慢速django安装的问题: How to profile django application with respect to execution time?
这个问题提到了hotshot的使用,Django的Wiki在profiling django下也提到了hotshot。
如果将Django与MySQL一起使用,那么MySQL中存在一个内部连接优化的bug。如果您尝试在
Admin.list_display
中使用外键,Django将生成具有排序和内部连接的查询,这在MySQL中非常慢。有两种解决方案:
使用django mysql修复后端:https://pypi.python.org/pypi/django-mysql-fix
重写AdminChangeList中的
get_query_set
-删除select_related
并设置prefetch_related
字段-更多详细信息请参见我的另一个答案:https://stackoverflow.com/a/23097385/1178806相关问题 更多 >
编程相关推荐