在我的 Rails 应用程序中,我只执行 10 个唯一的 SQL 查询。然而,每个都需要很长时间(1 - 5 秒)。每个查询的结果仅每 24 小时更改一次。
有哪些解决方案可以提高性能?
我正在使用 Postgres 和 Ruby on Rails。
我应该在某处缓存查询结果吗?我应该使用“存储过程”(还不知道它们是什么)吗?还有什么我应该研究的吗?
最佳答案
我会像这样使用Rails.cache
:
def self.some_long_query_that_changes_every_day
Rails.cache.fetch ['some_cache_key'], expires_in: 12.hours do
self.where(field: value)
end
end
fetch
将从未过期的缓存中读取或进行数据库查询并使用该键将其存储在缓存中。
唯一棘手的部分是expires_in
部分。根据数据更改的具体时间,您可能需要根据数据的存储时间来计算 expires_in
。
expire_in = Time.now.utc.end_of_day - Time.now.utc
Rails.cache.fetch ['some_cache_key'], expires_in: expire_in....
或者类似的东西。
关于ruby-on-rails - 提高 24 小时内返回相同结果的 SQL 查询的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28591974/