Rails3在每个请求上加载模型模式

时间:2011-06-23 17:24:54

标签: performance ruby-on-rails-3 activerecord scalability

我在heroku上运行我的应用程序。它是一个数据库密集型应用程序,使用大约150个表。因此它很慢。

我已经配置了newrelic来扩展它并找出问题所在。 然后我开始知道rails正在为每个使用过的模型触发一个额外的查询,以便在每个请求中加载它的模式。

例如

SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"sub_regions"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum

有什么办法,我可以阻止rails在每次请求时加载模型的架构吗?

任何帮助都将受到高度赞赏。

由于

2 个答案:

答案 0 :(得分:2)

你可以在production.rb文件中检查config.cache_classes = true吗?

答案 1 :(得分:0)

当然,您可以使用ActiveRecord的select选择要加载的列。

参见段2.5 Selecting Specific Fieldshere