我有一个控制器,它从一个相当复杂的关系查询返回JSON或XML,也有一些控制器逻辑.
我通过改进查询并确保我的索引对我的查询是正确的来调整数据库方面.
在我的日志中,我看到这样的项目:
Completed in 740ms (View: 1, DB: 50)
Run Code Online (Sandbox Code Playgroud)
因此,如果我理解正确,这意味着视图需要1秒才能渲染,数据库查询为50毫秒.控制器中剩下的所有时间都是?我试过绕过我的控制器逻辑,只是把我的to_json和to_xml放在那里,它也一样慢.作为参考点,我的平均返回JSON结果集是168k.
是否有其他步骤及时进入已完成状态?它是否包括网络传输的最后一个字节之前的时间?
更新:我在基准测试块中包含了控制器的各个部分:
self.class.benchmark("Active Record Find") do
#my query here
end
Run Code Online (Sandbox Code Playgroud)
我发现即使日志行说DB:50我的活动记录发现几乎占用了剩余的所有时间.所以现在我很困惑这个DB数字意味着什么以及为什么基准线会说~600ms但DB:时间将是~50.
谢谢