什么是让活动记录在开发环境中的所有查询中使用 SQL_NO_CACHE 的简单方法?
我想针对最坏情况的加载时间优化语句。希望这样做是有意义的,但是我在第一页命中时得到非常慢的查询,下一次所有查询都非常快,因为服务器应该缓存它们。
我正在使用带有 rails 3.2.3 的 mysql2 gem 0.3.11。
什么是让活动记录在开发环境中的所有查询中使用 SQL_NO_CACHE 的简单方法?
我想针对最坏情况的加载时间优化语句。希望这样做是有意义的,但是我在第一页命中时得到非常慢的查询,下一次所有查询都非常快,因为服务器应该缓存它们。
我正在使用带有 rails 3.2.3 的 mysql2 gem 0.3.11。
因为我不想编辑数百个查询,所以我在应用程序控制器中放置了一个前置过滤器,如下所示:
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
使用常规的 rails find 你可以把它塞进去:
2.3.5:
User.find(:all, :select => "SQL_NO_CACHE *", :conditions=>"id = 1234")
3+
User.where(:id => 10).select("SQL_NO_CACHE *")