Rails:SQL_NO_CACHE正在开发中进行调优

时间:2012-09-06 08:42:35

标签: ruby-on-rails activerecord mysql2

在开发环境中,将活动记录与SQL_NO_CACHE一起用于所有查询的简单方法是什么?

我想针对最坏情况加载时间优化语句。希望以这种方式做到这一点是有意义的,但是我在第一页命中时会得到非常慢的查询,下次所有查询都非常快,因为服务器应该缓存它们。

我正在使用带有rails 3.2.3的mysql2 gem 0.3.11。

2 个答案:

答案 0 :(得分:2)

由于我不想编辑数百个查询,我在应用程序控制器中放置了一个前置过滤器,如下所示:

def disable_sql_query_cache_in_development
  if Rails.env == "development"
    Rails.logger.warn Utils.yellow "ApplicationController.disable_sql_query_cache_in_development", "Query cache will be reset for worst case performance tuning"
    #ActiveRecord::Base.connection.execute("SET SESSION query_cache_type = OFF")
    ActiveRecord::Base.connection.execute("RESET QUERY CACHE")
  end
end

答案 1 :(得分:1)

使用常规导轨发现你可以填写:

2.3.5:

User.find(:all, :select => "SQL_NO_CACHE *", :conditions=>"id = 1234")

3 +

User.where(:id => 10).select("SQL_NO_CACHE *")