了解Django视图的基准

时间:2016-01-02 14:07:10

标签: django caching benchmarking

我正在尝试测量查询我的一个Django视图所需的时间。它基本上是用不同的LIMIT子句(sqlite)做一个SELECT。以下是我获得的时间,首先直接调用view函数,然后使用urllib将其作为GET请求调用。

LIMIT  view(s.)  request(s.)
25     4.5       12.6
100    1.6       2.1
400    3.5       3.3
800    4.4       4.7
1600   7.6       8.4
...

为什么第一个时间这么高?是否有一些明显的原因,比如我无法禁用的某些缓存,或数据库访问固有的?

我没有使用cache_page,我尝试按照我在网络上找到的一些建议来整体禁用缓存:

settings.CACHE_BACKEND = 'dummy:///'
settings.CACHES = {'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache',}}

如果我没有重新启动服务器并再次运行测试,则12s(第一次请求呼叫)将按预期变为1s,但4.5s(第一次查看呼叫)保持不变。

1 个答案:

答案 0 :(得分:1)

除了Django的请求缓存之外,还有数据库查询缓存,读取sqlite文件时的文件系统缓存等。但是,我不确定禁用缓存会实现什么。它们是现实世界请求 - 响应周期的一部分。

如果您想知道数据库查询的效率,只需使用./manage.py dbshellMySQL和{{} EXPLAIN直接在数据库控制台({{1}})中运行实际的SQL查询3}},不确定sqlite)。这将为您提供数据库操作的详细列表以及每个步骤使用的资源量。所以你可以从那里进行优化。

相关问题