性能:Rails 3.2.8开发日志显示大量CACHE行

时间:2012-11-19 09:18:11

标签: ruby-on-rails-3

在Rails 3.2.8的开发中,我从这样的CACHE中获得了很多行。

CACHE (0.0ms)  SELECT "projects".* FROM "projects" WHERE "projects"."id" IN (1, 7)

我知道rails正在缓存查询以提高性能。所有缓存行都在0,0 ms内完成。所以,这可能不是问题。

问题

我是否应该尝试改进我的代码/设计以摆脱如此多的缓存?它会提高性能吗?

1 个答案:

答案 0 :(得分:3)

缓存通常可以改善应用程序性能,而不是伤害。默认情况下,在单个请求中,完全相同的查询将仅运行一次,其余时间结果将被缓存。这是您使用CACHE日志条目观察的内容。

然而,这意味着您的应用程序尝试多次执行完全相同的查询。所以,是的,我建议你研究一下你的模型的哪些部分被反复请求,并且可能坚持实现.all结果并将它们作为参数传递而不是查询你的模型。

更精确的答案当然取决于你的具体情况,但你的直觉是正确的 - 很多缓存命中暗示了一个可能会有所改进的设计。

还有一点需要注意:如果要确保查询执行非缓存,请将其包装在未缓存的方法中,如下所示:

  ActiveRecord::Base.uncached do
    # your code here   
  end