【问题标题】:Why is Rails not caching SQL queries?为什么 Rails 不缓存 SQL 查询?
【发布时间】:2015-05-22 17:18:38
【问题描述】:

根据Rails Guides

查询缓存是 Rails 的一项功能,用于缓存返回的结果集 通过每个查询,这样如果 Rails 再次遇到相同的查询 该请求,它将使用缓存的结果集而不是运行 再次查询数据库。

接下来是一个在控制器的操作中执行相同查询的示例:

class ProductsController < ApplicationController

  def index
    # Run a find query
    @products = Product.all

    ...

    # Run the same query again
    @products = Product.all
  end

end

在几个地方的视图布局中,我调用Category.pluck(:id)。在开发日志中,我多次看到这一行:

SELECT "categories"."id" FROM "categories"

即使我将其设置为:config.action_controller.perform_caching = true 用于开发也会发生这种情况。为什么会这样?

【问题讨论】:

    标签: sql ruby-on-rails caching activerecord


    【解决方案1】:

    查询缓存来自 Rack。

    运行rake middleware

    然后寻找ActiveRecord::QueryCache

    如果您的中间件中包含此功能,则应启用 SQL 缓存,除非有其他东西将其关闭。

    这里有一些关于查询缓存的文档:

    http://edgeapi.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/QueryCache.html

    还有机架代码

    http://api.rubyonrails.org/classes/ActiveRecord/QueryCache.html

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多